ThreadLocal简单使用

原文地址:《ThreadLocal简单使用》

1、什么是ThreadLocal
每一个ThreadLocal能够放一个线程级别的变量,可是它本身能够被多个线程共享使用,并且又能够达到线程安全的目的,且绝对线程安全。这里的安全只是表示在当前线程中创建的对象不会被其他的线程修改。 这跟ThreadLocal中的内部实现有关,关于TreadLocal的具体实现在后期再聊。

2、为什么使用ThreadLocal
ThreadLocal的主要用途是为了保持线程自身对象和避免参数传递,主要适用场景是按线程多实例(每个线程对应一个实例)的对象的访问,并且这个对象很多地方都要用到。 说的太多也不外乎就是方面、线程级变量安全、满足自己业务的需求。

3、代码实例
public static void main(String[] args) throws InterruptedException {
ThreadLocal local = new ThreadLocal();
local.set(100);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
local.set(99);
System.out.println(JSONObject.toJSONString(local.get()));
}
},“thread-A”);
thread.start();
thread.join();
System.out.println(JSONObject.toJSONString(local.get()));
local.remove();
}
4、运行结果
当前线程Id:12,ThreadLocal-local存储的对象值:99
当前线程Id:1,ThreadLocal-local存储的对象值:100

主线程在local中存储的值为100,其中线程Id为12的线程为通过new Thread产生的子线程,在子线程中修改local中存储的值为99,在主线程中输出的值依然为100,local中存储的值没有受到子线程中的操作影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值