内容简介:本地线程,通常用于防止对可变的单实例对象或全局变量进行共享,常见的比如数据库连接。可以将ThreadLocal<T>视为Map<Thread,T>,虽然实际上并不是这样实现的。也可以把事务上下文保存在ThreadLocal中,虽然方便处理一些功能,但是隐性增加了耦合度,降低了代码的可重用性,因此尽量避免滥用ThreadLocal。ThreadLocal提供了get和set常用的方法,set是用来设置值,get是用来获取set设置的最新的值。这些值相对于使用改变量的线程存有的一份独立的副本。运行结果如下:
用途
本地线程,通常用于防止对可变的单实例对象或全局变量进行共享,常见的比如数据库连接。可以将ThreadLocal<T>视为Map<Thread,T>,虽然实际上并不是这样实现的。也可以把事务上下文保存在ThreadLocal中,虽然方便处理一些功能,但是隐性增加了耦合度,降低了代码的可重用性,因此尽量避免滥用ThreadLocal。ThreadLocal提供了get和set常用的方法,set是用来设置值,get是用来获取set设置的最新的值。这些值相对于使用改变量的线程存有的一份独立的副本。
例子
public class NotSafeDemo2 { private ThreadLocal<Integer> num = new ThreadLocal<>(); public void add(int value) { try { if (null == num.get()) { num.set(0); } int temp = num.get(); num.set(num.get() + value); Thread.sleep(100); System.out.println(value + "+" + temp + "=" + num.get()); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { NotSafeDemo2 synchronizeDemo = new NotSafeDemo2(); AddThread3 addThread3 = new AddThread3(synchronizeDemo); AddThread4 addThread4 = new AddThread4(synchronizeDemo); addThread3.start(); addThread4.start(); } } class AddThread3 extends Thread { NotSafeDemo2 synchronizeDemo; public AddThread3(NotSafeDemo2 synchronizeDemo) { this.synchronizeDemo = synchronizeDemo; } @Override public void run() { synchronizeDemo.add(1); } } class AddThread4 extends Thread { NotSafeDemo2 synchronizeDemo; public AddThread4(NotSafeDemo2 synchronizeDemo) { this.synchronizeDemo = synchronizeDemo; } @Override public void run() { synchronizeDemo.add(2); } }
运行结果如下:
这里直接更改 java并发编程学习之synchronize(一) 的例子,可以看到,num的值不被线程共享。
以上所述就是小编给大家介绍的《java并发编程学习之ThreadLocal》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Go并发编程-并发编程难在哪里
- Java并发编程的艺术,解读并发编程的优缺点
- Java并发系列—并发编程基础
- JAVA并发编程之并发模拟工具
- Java并发系列—并发编程的挑战
- c++并发编程—分布式编程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
用户至上:用户研究方法与实践(原书第2版)
凯茜·巴克斯特 / 王兰、杨雪、苏寅 / 机械工业出版社 / 2017-5-1 / 99
《UI/UE系列丛书 用户至上:用户研究方法与实践(原书第2版)》是用户研究方法指南,谷歌用户体验研究员十几年工作经验结晶,从理论到实战,包含完整的实操案例,是设计以人为中心产品的实用手册。 《UI/UE系列丛书 用户至上:用户研究方法与实践(原书第2版)》包含五个部分共15章。入门篇包括第1~5章:介绍用户体验入门,如何理解目标用户,道德与法律问题,如何搭建研究设施,如何选择用户体验研究方......一起来看看 《用户至上:用户研究方法与实践(原书第2版)》 这本书的介绍吧!