0
点赞
收藏
分享

微信扫一扫

ThreadLocal 理解Ing

老北京的热干面 2022-03-12 阅读 37

1. ThreadLocal是什么?

某些数据是以线程为作用域并且不同线程有不同数据副本时,考虑ThreadLocal

2. ThreadLocal的简单使用

public class ThreadLocaDemo {
 
    private static ThreadLocal<String> localVar = new ThreadLocal<String>();
 
    static void print(String str) {
        //打印当前线程中本地内存中本地变量的值
        System.out.println(str + " :" + localVar.get());
        //清除本地内存中的本地变量
        localVar.remove();
    }
    public static void main(String[] args) throws InterruptedException {
 
        new Thread(new Runnable() {
            public void run() {
                ThreadLocaDemo.localVar.set("local_A");
                print("A");
                //打印本地变量
                System.out.println("after remove : " + localVar.get());
               
            }
        },"A").start();
 
        Thread.sleep(1000);
 
        new Thread(new Runnable() {
            public void run() {
                ThreadLocaDemo.localVar.set("local_B");
                print("B");
                System.out.println("after remove : " + localVar.get());
              
            }
        },"B").start();
    }
}
 
A :local_A
after remove : null
B :local_B
after remove : null
 

两个线程分表获取了自己线程存放的变量,他们之间变量的获取并不会错乱 

3. ThreadLocal的实现原理

 

 

举报

相关推荐

0 条评论