您现在的位置是:首页 > 文章详情

Java多线程进一步理解之----------线程共享数据

日期:2018-08-05点击:366

说起线程共享数据有几种方式,

1.使用公共集合类来实现,代码很简单就不多解释:

public class TestThreadShareData { private static int data = 0; private static Map<Thread,Integer> map = new HashMap<Thread,Integer>(); public static void main(String[] args) { for (int i = 0; i < 2; i++) { new Thread(new Runnable() { @Override public void run() { data = new Random().nextInt(); map.put(Thread.currentThread(), data); System.out.println("main" + Thread.currentThread().getName() + "data=" + data); new A().get(); new B().get(); } }).start(); } } static class A { public void get() { data = map.get(Thread.currentThread()); System.out.println("A from main"+Thread.currentThread().getName() + "data = "+data); } } static class B { public void get() { data = map.get(Thread.currentThread()); System.out.println("B from main"+Thread.currentThread().getName() + "data = "+data); } } }

2.使用互斥的访问机制

public class doThreadShareData { //java.util.concurrent public static void main(String[] args) { ShareData shareData =new ShareData(); new Thread(new Runnable() { @Override public void run() { shareData.deccreament(); } }).start(); new Thread(new Runnable() { @Override public void run() { shareData.increment(); } }).start(); } } class ShareData { private int j = 0; public synchronized void increment(){ j++; } public synchronized void deccreament(){ j--; } } 

 

原文链接:https://yq.aliyun.com/articles/625766
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章