请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

threadlocal问题

老师,你好。我在慕课网的一门多并发的课中看到,使用ThreadLocal后要执行remove方法,如果不执行,会导致内存泄漏。springmvc接受请求是使用线程池来处理请求吗?所以需要用完调用remove方法吗?

正在回答

2回答

(1)是线程池执行请求
(2)需要remove 防止内存泄漏

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉3764637 #1
    谢谢老师,如果是线程池执行,那下一次线程池调用的时候应该会覆盖之前的吧?那似乎就不需要调用remove方法了吧?麻烦老师再解答一下,万分感谢
    回复 有任何疑惑可以回复我~ 2020-06-15 15:01:32
  • 若鱼1919 回复 提问者 慕粉3764637 #2
    除非你能保证池中的线程在开始执行请求之前都会重新覆盖threadlocal里面的值。即便如此也推荐在使用完以后进行remove,以防万一
    回复 有任何疑惑可以回复我~ 2020-06-15 15:02:55
  • 提问者 慕粉3764637 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-06-15 15:07:36
带大大师兄 2020-06-18 15:54:20

泄露是因为ThreadLocalMap被GC后有key=null而value是强引用不会被回收所以才泄露,ThreadLocalMap的set get romove方法调用时候都会清楚key = null 的记录

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信