Java笔记16:多线程共享数据

来源:互联网 发布:mac 桌面日程管理软件 编辑:程序博客网 时间:2024/06/05 04:28

一、Thread实现

public class ThreadDemo4 {     publicstaticvoid main(String[] args) {        new ThreadTest4().start();        new ThreadTest4().start();        new ThreadTest4().start();    }} class ThreadTest4 extends Thread {    privateinttickets = 100;    publicvoid run() {        booleanloop = true;        while(loop) {            if(tickets > 0) {                System.out.println(Thread.currentThread().getName() + " is sailing ticket " + tickets--);            } else {                loop = false;            }        }    }}

 

运行结果:

 

分析:

从运行结果可以看出,最终打印出了3份数据。说明每个线程独立地拥有一份数据,用Thread实现的多线程之间无法共享数据。

 

二、Runnable实现

public class ThreadDemo5 {     publicstaticvoid main(String[] args) {        ThreadTest5 t = new ThreadTest5();        new Thread(t).start();        new Thread(t).start();        new Thread(t).start();    }} class ThreadTest5 implements Runnable {    privateinttickets = 100;    publicvoid run() {        booleanloop = true;        while(loop) {            if(tickets > 0) {                System.out.println(Thread.currentThread().getName() + " is sailing ticket " + tickets--);            } else {                loop = false;            }        }    }}

 

运行结果:

 

分析:

从运行结果可以看出,最终打印出来的只有一份数据。说明用Runnable实现的多个线程之间共享一份数据。

 

结论:

两种方法实现多线程的最重要区别是:Runnable实现的多线程共享数据,Thread实现的多线程,每个线程拥有独立的数据。所以在实际项目中,通常用Runnable方式来实现多线程。

0 0
原创粉丝点击