同时使用线程本地变量以及对象缓存的问题
如有转载请著名出处:https://www.cnblogs.com/funnyzpc/p/18313879
前面
前些时间看别人写的一段关于锁的(对象缓存+线程本地变量)的一段代码,这段代码大致描述了这么一个功能:
外部传入一个key,需要根据这个key去全局变量里面找是否存在,如有有则表示有人对这个key加锁了,往下就不执行具体业务代码,同时,同时哦 还要判断这个key是不是当前线程持有的,如果不是当前线程持有的也不能往下执行业务代码~
然后哦 还要在业务代码执行完成后释放这个key锁,也就是要从 ThreadLocal
里面移除这个key。
当然需求不仅于此,就是业务的特殊性需要 ThreadLocal
同时持有多个不同的key,这就表明 ThreadLocal
的泛型肯定是个List或Set。
然后再说下代码,为了演示问题代码写的比较简略,以下我再一一说明可能存在的问题