请稍等 ...
×

采纳答案成功!

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

线程池的线程执行完task后对象的回收

老师,想请教一下,单线程执行完任务会变成terminated状态,jvm发现这个任务中创建的对象已经不被线程持有了,会把它们回收。那如果换作线程池的线程执行task,线程池使用完后归还到线程池,那它持有的对象是怎么回收的。

正在回答 回答被采纳积分+3

1回答

悟空 2020-08-23 09:35:36

并不会回收的

0 回复 有任何疑惑可以回复我~
  • 提问者 崇拜者_ #1
    那线程池执行task产生的对象岂不是会一直占着内存
    回复 有任何疑惑可以回复我~ 2020-08-23 18:41:13
  • 悟空 回复 提问者 崇拜者_ #2
    所以用完ThreadLocal才要手动remove,就是因为线程不会Terminated,所以ThreadLocal的value也不会被回收。如果线程对象没了,那它产生的对象会自动被回收的。
    回复 有任何疑惑可以回复我~ 2020-08-23 23:46:14
  • 提问者 崇拜者_ 回复 悟空 #3
    不用threadlocal,就是普通的FixedThreadPool,用这个线程池的某一个线程重复执行一个task100次,task里的内容就是new了一个Integer,那内存里是会一直存着100个这样的Integer对象么?
    回复 有任何疑惑可以回复我~ 2020-08-25 21:33:09
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信