1.如何用ThreadLocal解决数据隔离?

多线程之间因为数据共享在多个线程导致了线程不安全,要求线程间需要数据隔离。
每个线程间通过ThreadLocal创建新的对象,每个变量进来时判断(get)这个这个线程有没有创建map,如果map已经存在,判断map中这个变量(Key)是不是已经存在,存在即修改变量值(set),如果该变量不存在则添加该变量(Key-Value);如果发现这个map不存在,则创建这个map(create)。

2.内存泄露

由于线程结束时,ThreadLocal对象被回收,但由于Key-value之间的强引用还存在,GC无法回收,造成内存泄漏。针对这个问题,可以养成remove()的习惯,降低内存泄漏。