内容简介:本地线程,通常用于防止对可变的单实例对象或全局变量进行共享,常见的比如数据库连接。可以将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++并发编程—分布式编程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Trading and Exchanges
Larry Harris / Oxford University Press, USA / 2002-10-24 / USD 95.00
This book is about trading, the people who trade securities and contracts, the marketplaces where they trade, and the rules that govern it. Readers will learn about investors, brokers, dealers, arbit......一起来看看 《Trading and Exchanges》 这本书的介绍吧!