关于使用ThreadLocal相关问题

茉妮卡 2019-02-16 08:59:44
小弟在高并发场景下,需缓存一些数据(因数据的加载耗时较长,且数据有点大,感觉不适合搞到redis之类,频繁重复访问时网络开销是个问题,还有序列化问题),且考虑到数据内部操作存在线程安全,所以使用了ThreadLocal。

但ThreadLocal内部保存的对象其实是弱引用,也就是说gc时会优先被回收,这就导致数据在某个并发少(但同个应用下还有其他不相干的,大量的并发请求)的时间段内,不断的被回收与重新加载,平均耗时被拉长。

同时,当并发量提高时,因每个线程都加载且保有一份数据,感觉又有点浪费,毕竟并不是所有线程同个时刻都在访问这份数据;并且随着业务的扩展,数据也会膨胀,所以线程都保有数据,内存也是个问题。

请问,有何解法。
...全文
15 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,503

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧