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
相关文章推荐
- java通过共享变量结束run停止线程的方法示例
- Java多线程编程之ThreadLocal线程范围内的共享变量
- 黑马程序员--javaSE--ThreadLocal实现线程范围的共享变量
- 多线程(六):ThreadLocal 关键字
- Spark RDD与共享变量简介
- 张孝祥ThreadLocal实现线程范围内共享变量(学习笔记)
- Java多线程之内存可见性
- JAVAWeb开发之Servlet-18.Servlet共享变量与变量的作用域 推荐
- C++static成员函数和static成员的学习
- 线程范围内共享变量
- java多线程共享变量
- volatile语义
- Spark共享变量---Scala
- Spark共享变量---Java
- C语言(Head First C)-5_2:使用多个源文件:共享函数和共享变量
- Spark变量访问总结
- tensorflow(1) 共享变量
- tensorflow共享变量
- cmake:在各级子项目(目录)之间共享变量
- python线程锁实践实例