采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,想请教一下,单线程执行完任务会变成terminated状态,jvm发现这个任务中创建的对象已经不被线程持有了,会把它们回收。那如果换作线程池的线程执行task,线程池使用完后归还到线程池,那它持有的对象是怎么回收的。
并不会回收的
那线程池执行task产生的对象岂不是会一直占着内存
所以用完ThreadLocal才要手动remove,就是因为线程不会Terminated,所以ThreadLocal的value也不会被回收。如果线程对象没了,那它产生的对象会自动被回收的。
不用threadlocal,就是普通的FixedThreadPool,用这个线程池的某一个线程重复执行一个task100次,task里的内容就是new了一个Integer,那内存里是会一直存着100个这样的Integer对象么?
登录后可查看更多问答,登录/注册
JUC全方位讲解,构建并发工具类知识体系
960 11
1.4k 10
992 10
975 10
1.4k 9