多线程资源隔离之ThreadLocal

本文深入讲解了ThreadLocal(线程局部变量)的概念及其在多线程环境下如何通过资源隔离保证线程安全。通过实例演示了如何正确使用ThreadLocal,使得每个线程都拥有独立的对象副本,进而避免线程间的数据竞争。

上篇讲到多线程线程安全问题的解决思路,这篇将详细讲解资源隔离ThreadLocal的实践。

        ThreadLocal也叫线程局部变量,类似Map结构,以当前线程为key。既然是以资源隔离的思想保证线程安全,那么保存到每个线程的对象就应该是一个副本,切记这样的对象不能是单例,如果非要使用单例创建对象,保存到每个线程的必须是单例对象的克隆对象。


图片发自简书App

      下面演示一个实例来实践ThreadLocal:


图片发自简书App

 


图片发自简书App

 


图片发自简书App

 


图片发自简书App

        通过这个实践,可以看到,使用ThreadLocal使各个线程拥有对象的副本,各个线程对副本的修改不会影响到别的线程的副本,从而避免了线程安全问题。

        再次强调,使用单例创建的对象,保存到ThreadLocal,一定要克隆对象。对象其实就是索引,单例,只有一个对象,一个索引,多线程操作依然有线程安全问题,数据会被篡改。切记切记。

转载于:https://www.cnblogs.com/dushenzi/p/9368673.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值