java线程:单例隐藏ThreadLocal实现线程数据共享
2014-06-10 09:26
621 查看
共享的效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201406/e41191e08696235962b5757b57522556)
A和B需要共享同一线程,同样的另一组A和B共享另一组线程,两组相互之间不受影响。
代码:
A和B需要共享同一线程,同样的另一组A和B共享另一组线程,两组相互之间不受影响。
代码:
package cn.itcast.lesson6; import java.util.Random; public class ThreadLocalTest { public static void main(String[] args) { for(int i=0;i<2;i++){ new Thread(new Runnable() { public void run() { int data = new Random().nextInt(); System.out.println(Thread.currentThread().getName() +" has put data: " + data); MyThreadScopeData.getThreadInstance().setName("name" + data); MyThreadScopeData.getThreadInstance().setAge(data); new A().get(); new B().get(); } }).start(); } } static class A{ public void get(){ MyThreadScopeData myData = MyThreadScopeData.getThreadInstance(); System.out.println("A from" + Thread.currentThread().getName() + " getMyData:" + myData.getName()+" , " + myData.getAge()); } } static class B{ public void get(){ MyThreadScopeData myData = MyThreadScopeData.getThreadInstance(); System.out.println("B from" + Thread.currentThread().getName() + " getMyData:"+myData.getName()+" , " + myData.getAge()); } } } class MyThreadScopeData{ private MyThreadScopeData(){} //单例隐藏ThreadLocal实现数据共享 public static /*synchronized*/ MyThreadScopeData getThreadInstance(){ MyThreadScopeData instance = map.get(); if(instance == null){ instance = new MyThreadScopeData(); map.set(instance); } return instance; } private static ThreadLocal<MyThreadScopeData> map = new ThreadLocal<MyThreadScopeData> (); private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } }
相关文章推荐
- java线:辛格尔顿隐藏ThreadLocal实现线程数据共享
- java-线程-用ThreadLocal类实现线程范围内的数据共享
- ThreadLocal实现:java线程范围内的共享数据,线程外独立
- Java基础——ThreadLocal实现线程范围内的数据共享
- java 使用volatile实现线程数据的共享
- Java线程总结(四):ThreadLocal实现线程范围的共享变量
- java多线程:16、阻塞队列【BlockingQueue】实现线程数据共享的效果
- Java不同线程之间实现数据共享
- Java并发库(五、六、七):线程范围内共享数据、ThreadLocal、共享数据的三种方法
- 多线程(三) 实现线程范围内模块之间共享数据及线程间数据独立(ThreadLocal)
- java多线程:5、线程范围内的数据共享_ThreadLocal
- ThreadLocal实现线程范围内的数据共享
- Java基础:多线程之线程范围内的数据共享ThreadLocal
- 黑马程序员---java中如何实现线程范围内共享数据
- Java线程与并发库高级应用-线程范围内共享数据ThreadLocal类
- java多线程学习(四)---ThreadLocal和单例实现线程内对象的共享
- ThreadLocal类实现线程范围内数据共享
- ThreadLocal实现线程范围内模块之间共享数据及线程间数据独立
- 多线程(三) 实现线程范围内模块之间共享数据及线程间数据独立(ThreadLocal)
- Java中如何实现单个线程范围内的数据共享