并发编程处理实战篇9:线程本地变量ThreadLocal

这篇博客探讨了Java中的ThreadLocal类,如何为每个线程提供独立的变量副本,避免多线程共享变量时的冲突。文章介绍了ThreadLocal的工作原理,包括ThreadLocalMap的使用,并展示了如何在实践中创建和使用ThreadLocal。最后,对比了ThreadLocal与线程同步机制,阐述了ThreadLocal以空间换时间的并发解决方案。
摘要由CSDN通过智能技术生成

PS

关于多线程共享变量ThreadLocal<T>

变量值的共享可以使用public static 变量的形式,所有的线程都可以使用同一个public static变量。如果想实现每一个线程都有自己的共享变量,如何实现?

JDK中提供了类ThreadLocal<T>可以解决这样的问题。

原理:
ThreadLocal所属包java.lang.ThreadLocal<T> 是个泛型class
ThreadLocal为解决多线程并发问题提供了新的思路,使用这个类库可以简洁的实现多线程程序,
当使用ThreadLocal维护变量时,ThreadLocal为每一个使用该变量的线程提供独立的变量副本,所以没一个线程都可以改变自己的副本,而不会影响到其他线程对于的变量副本。
从线程的角度看,目标变量就象是线程的本地变量,这也是类名中“Local”所要表达的意思。

ThreadLocal为每一个线程维护变量的副本的原理:在ThreadLocal类中有一个Map集合,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本,查看ThreadLocal的源码可以看到
其开放的方法主要有:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyondwild

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值