博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java线:辛格尔顿隐藏ThreadLocal实现线程数据共享
阅读量:7096 次
发布时间:2019-06-28

本文共 1696 字,大约阅读时间需要 5 分钟。

效果图分享:

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
map = new ThreadLocal
(); 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; }}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
SQLite 日期操作
查看>>
热词分享
查看>>
phpcms相关
查看>>
thinkphp空控制器的处理
查看>>
Unity优化----drawcall系列
查看>>
Guava包学习--Table
查看>>
Vue+Webpack构建前端工程
查看>>
hdu 1007 Quoit Design (最近点对问题)
查看>>
vs 自动生成core dump文件
查看>>
定时器
查看>>
淳于髡果然能忽悠
查看>>
7--Rails路由
查看>>
UVa 572 - Oil Deposits
查看>>
UVa 10935 - Throwing cards away I
查看>>
ERP知道“为什么”, MES知道“怎么做”!
查看>>
寒假作业03
查看>>
Java环境变量配置
查看>>
按值传递和按地址传递
查看>>
蓝桥杯 方格取数
查看>>
带泛型的类应如何互相转化(NET4.0+)?
查看>>