IT序号网

6. ThreadLocal

developer 2022年05月02日 编程语言 204 0

1. 解决的问题:

多线程访问共享变量时,为了线程安全会加入锁机制,这加重了开发者的负担。于是出现了ThreadLocal。

2. ThreadLocal类

创建共享变量时,每个线程会访问属于自己独有的一份共享变量的拷贝,从而避免了线程安全的问题。

3.ThreadLocal代码示例

代码示例:

定义ThreadLocal共享变量,然后线程1和线程2分别访问、操作共享变量,结果显示线程1和2操作的ThreadLocal共享变量互不影响。

public class ThreadLocalTest { 
    static ThreadLocal<String> localVariable = new ThreadLocal<>(); 
    static void print(String str){ 
        System.out.println(str+":"+localVariable.get()); 
//        localVariable.remove(); 
    } 
    public static void main(String[] args){ 
        Thread threadOne = new Thread(new Runnable() { 
            @Override 
            public void run() { 
                localVariable.set("threadOne local Variable"); 
                print("threadOne"); 
                System.out.println("threadOne remove after"+":"+localVariable.get()); 
            } 
        }); 
 
        Thread threadTwo = new Thread(new Runnable() { 
            @Override 
            public void run() { 
                localVariable.set("threadTwo local Variable"); 
                print("threadTwo"); 
                System.out.println("threadTwo remove after"+":"+localVariable.get()); 
            } 
        }); 
 
        threadOne.start(); 
        threadTwo.start(); 
    } 
} 

输出:

threadOne:threadOne local Variable 
threadOne remove after:threadOne local Variable 
threadTwo:threadTwo local Variable 
threadTwo remove after:threadTwo local Variable 

释放remove后输出:

threadOne:threadOne local Variable 
threadOne remove after:null 
threadTwo:threadTwo local Variable 
threadTwo remove after:null 

#4.ThreadLocal实现原理


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

5. 线程死锁