读码农翻身之用来维护本线程变量的ThreadLocal

1、为什么需要ThreadLocal?
来看这样一个实例,在某个类中,创建了一个Context的对象,其中设置了一个trackerID,然后再调用了其他的java类,然后最终需要使用到ctx的这个tranckerID要怎么办?
在这里插入图片描述
有人想,直接把Context对象一层层传递下去,这样到时候就可以用到了
在这里插入图片描述
但是这样的缺点,就是太麻烦,有时候改动会很大。此时又有人认为可以把set/get TrackerID的方法修改为static静态方法。
在这里插入图片描述
但是这样多线程并发的时候有可能出问题。(因为线程1调用了set,然后线程2又调用了set,数据会相互覆盖。)-----------话说能不能set方法是私有的,然后get方法是静态的?

2、解决方案:
面对上面的问题,能否把这个值放到线程中?让线程携带这个值到处跑,这样无论在任何地方都可以轻松获取到?这个就是ThreadLocal

3、如何使用?
保存数据:
在这里插入图片描述
在这里插入图片描述
取出数据:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值