您的位置:首页 > 编程语言 > Java开发

java多线程通信之共享数据

2015-09-10 15:50 477 查看



(1)当访问共同的代码的时候:可以使用同一个Runnable对象这个Runnable对象中有这个共享数据,比如卖票系统就可以这么做。
public class MutiThreadShareData {

public static void main(String[] args) {

ShareData data=new ShareData();

new Thread(data).start();
new Thread(data).start();

}

}

class ShareData implements Runnable {

private int count = 10000;

@Override
public  void run() {
while(true){
synchronized (this) {
count--;
};
System.out.println(Thread.currentThread().getName()+":"+count);
}
}

}


(2)当各个线程访问的代码不同时:这时候需要使用不同的Runnable对象

public class MutiThreadShareData {

public static void main(String[] args) {

final ShareData data=new ShareData();

new Thread(new Runnable() {

@Override
public void run() {
while(true){
data.increment();
}

}
}).start();

new Thread(new Runnable() {

@Override
public void run() {
while(true){
data.decrement();
}
}
}).start();
}

}

class ShareData  {

private int j=2000;
public synchronized void increment(){
j++;
System.out.println(Thread.currentThread().getName()+":"+j);
}
public synchronized void decrement(){
j--;
System.out.println(Thread.currentThread().getName()+":"+j);
}
}


参考文章:
http://my.oschina.net/u/248570/blog/53226
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  共享变量