数据隔离(ThreadLocal)

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

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

2.内存泄露

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

全部评论

相关推荐

下北澤大天使:你是我见过最美的牛客女孩😍
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 18:30
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务