并发编程(四):ThreadLocal底层原理详解

一:TreadLocal基本概念

 ThreadLocal类主要解决的就是让每个线程绑定自己的值,可以将ThreadLocal类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。

如果你创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的本地副本,这也是ThreadLocal变量名的由来。他们可以使用 get() 和 set() 方法来获取默认值或将其值更改为当前线程所存的副本的值,从而避免了线程安全问题。

总结为:一互不影响,二变量在线程之间隔离。

二:ThreadLocal示例

// 测试ThreadLocal是否能够保证同步
private static ThreadLocal threadLocal = ThreadLocal.withInitial(()->1);

public static void main(String[] args){

    for (int i = 0; i < 10 ; i++) {
        int finalI = i;
        new Thread(()->{
            System.out.println(Thread.currentThread().getName()+"--开始->"+threadLocal.get().toString());
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            threadLocal.set(new Integer(finalI

你可能感兴趣的:(线程安全,并发编程,多线程,thread,多线程,并发编程,java,内存泄漏)