欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java线程本地变量导致的缓存问题解决方法,

来源: javaer 分享于  点击 48668 次 点评:287

Java线程本地变量导致的缓存问题解决方法,


目录
  • 一、前言
  • 二、基本逻辑
  • 三、测试代码
  • 四、解决锁问题
  • 五、 解决ThreadLocal问题
  • 总结

一、前言

前些时间看别人写的一段关于锁的(对象缓存+线程本地变量)的一段代码,这段代码大致描述了这么一个功能:

外部传入一个key,需要根据这个key去全局变量里面找是否存在,如有有则表示有人对这个key加锁了,往下就不执行具体业务代码,同时,同时哦 还要判断这个key是不是当前线程持有的,如果不是当前线程持有的也不能往下执行业务代码~

然后哦 还要在业务代码执行完成后释放这个key锁,也就是要从 ThreadLocal 里面移除这个key。

当然需求不仅于此,就是业务的特殊性需要 ThreadLocal 同时持有多个不同的key,这就表明 ThreadLocal 的泛型肯定是个List或Set。

然后再说下代码,为了演示问题代码写的比较简略,以下我再一一说明可能存在的问题

相关栏目:

用户点评