9.并发编程--ThreadLocal

并发编程--ThreadLocal

1. ThreadLocal :

  • * 线程局部变量,是一种多个线程间并发访问变量的解决方案。
  • * 与其使用synchronized等加锁的方式,ThreadLocal完成不提供锁,而是用空间换时间的手段,为每个线程提供变量的独立副本,以保证线程安全;
  • * 从性能上来说:ThreadLocal不具有绝对的优势,在并发并不是很高的情况下,加锁的性能会更好;但作为一套完全与锁无关的线程安全的解决方案,

在高并发量或者竞争激励的场景,使用ThreadLocal可以在一定程度上减少锁竞争。
示例:ConnThreadLocal.java

 1     public class ConnThreadLocal {
 2 
 3         public static ThreadLocal<String> th = new ThreadLocal<String>();
 4 
 5         public void setTh(String value){
 6           th.set(value);
 7         }
 8         public void getTh(){
 9           System.out.println(Thread.currentThread().getName() + ":" + this.th.get());
10         }
11 
12         public static void main(String[] args) throws InterruptedException {
13 
14           final ConnThreadLocal ct = new ConnThreadLocal();
15           Thread t1 = new Thread(new Runnable() {
16             @Override
17             public void run() {
18               ct.setTh("张三");
19               ct.getTh();
20             }
21           }, "t1");
22 
23           Thread t2 = new Thread(new Runnable() {
24             @Override
25             public void run() {
26               try {
27                 Thread.sleep(1000);
28                 ct.getTh();
29               } catch (InterruptedException e) {
30                 e.printStackTrace();
31               }
32             }
33           }, "t2");
34 
35           t1.start();
36           t2.start();
37         }
38 
39     }

 

转载于:https://www.cnblogs.com/Mao-admin/p/9988943.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值