Java线程本地变量导致的缓存问题解决方法,
分享于 点击 48668 次 点评:287
Java线程本地变量导致的缓存问题解决方法,
目录
- 一、前言
- 二、基本逻辑
- 三、测试代码
- 四、解决锁问题
- 五、 解决ThreadLocal问题
- 总结
一、前言
前些时间看别人写的一段关于锁的(对象缓存+线程本地变量)的一段代码,这段代码大致描述了这么一个功能:
外部传入一个key,需要根据这个key去全局变量里面找是否存在,如有有则表示有人对这个key加锁了,往下就不执行具体业务代码,同时,同时哦 还要判断这个key是不是当前线程持有的,如果不是当前线程持有的也不能往下执行业务代码~
然后哦 还要在业务代码执行完成后释放这个key锁,也就是要从 ThreadLocal 里面移除这个key。
当然需求不仅于此,就是业务的特殊性需要 ThreadLocal 同时持有多个不同的key,这就表明 ThreadLocal 的泛型肯定是个List或Set。
然后再说下代码,为了演示问题代码写的比较简略,以下我再一一说明可能存在的问题
用户点评