ThreadLocal线程局部变量

ThreadLocal是线程局部变量,是一种多线程并发访问变量的解决方案,与synchronized加锁方式不同,他完全不提供锁头,提倡以空间换时间的方式,为每个线程提供独立的副本,以保障线程安全。
在并发量不是很高的时候,synchronized加锁的方式可能会更好,但当处于高并发或者锁竞争很激烈的场景时,使用ThreadLocal可以在一定程度上减少锁竞争。
下面是验证ThreadLocal的小例子:

package com.lydon.thread;

import java.util.*;

public class ConnThreadLocal {
    private static ThreadLocal<String> th=new ThreadLocal<String>();

    private void setTh(String value){
        th.set(value);
    }

    private void getTh(){
        System.out.println(Thread.currentThread().getName()+"获取到的值为"+th.get());
    }

    public static void main(String[] args) {
        ConnThreadLocal connThreadLocal=new ConnThreadLocal();
        new Thread(()->{
            connThreadLocal.setTh("aa");
            connThreadLocal.getTh();
        }).start();


        new Thread(()->{
            connThreadLocal.getTh();
        }).start();
    }


}

输出:
Thread-0获取到的值为aa
Thread-1获取到的值为null

Process finished with exit code 0

由此可以看出ThreadLocal修饰的变量的值分为了两份。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值