java线程:单例隐藏ThreadLocal实现线程数据共享
来源:互联网 发布:oracle数据库的decode 编辑:程序博客网 时间:2024/05/20 05:31
共享的效果图:
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;}}
1 0
- java线程:单例隐藏ThreadLocal实现线程数据共享
- 线程数据共享-ThreadLocal
- java多线程学习(四)---ThreadLocal和单例实现线程内对象的共享
- ThreadLocal实现线程范围内的数据共享
- ThreadLocal类实现线程范围内数据共享
- Java线程(二):线程数据共享及ThreadLocal使用
- ThreadLocal实现:java线程范围内的共享数据,线程外独立
- ThreadLocal线程范围内共享数据
- ThreadLocal实现线程单实例
- Java基础——ThreadLocal实现线程范围内的数据共享
- Java基础:多线程之线程范围内的数据共享ThreadLocal
- ThreadLocal实现线程范围内模块之间共享数据及线程间数据独立
- 线程范围内的共享数据 ThreadLocal
- 线程共享数据以及ThreadLocal类
- ThreadLocal-------线程范围内的数据共享
- ThreadLocal实现线程范围的共享变量
- ThreadLocal实现线程范围的共享变量
- ThreadLocal实现线程范围的共享变量
- STM32的NVIC个人理解
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- 宁静以致远,淡泊以明志
- NSMutableURLRequest实现Post请求及其timeoutInterval不生效问题解决
- working copy locked 问题
- java线程:单例隐藏ThreadLocal实现线程数据共享
- 谷歌地图高清卫星地图、电子地图和地形图有什么区别?
- java swing实现小球沿正弦曲线运动的代码
- 【leetcode】Recover Binary Search Tree
- 二叉搜索树学习
- GetBuffer
- webrtc--AudioProcessing的使用
- ubuntu下nginx安装手记
- 基于OpenStack构建手写识别数据即服务云平台