先说答案,不需要。
线程执行完了,线程的引用也没有了,gc过后,啥都不留。
但为什么要写这一篇blog,因为Java技术栈公众号的这 篇文章... 而且作者也给我回复了,说需要remove。不服不服。。。
https://mp.weixin.qq.com/s/aItosqUu1aMvWqJ2ZMqy5Q
以下是测试用例和VisualVM的截图。只是求知,而非批判。
public static void main(String[] args) throws InterruptedException {
int j = 0;
Thread.sleep(10000L);
System.out.println("开始....");
while (true) {
Thread thread = new Thread(() -> {
ThreadLocal<ArrayList<String>> curThreadLocal = ThreadLocal.withInitial(ArrayList::new);
for(int i = 0; i < 10000; i++) {
ArrayList<String> threadLocalList = curThreadLocal.get();
threadLocalList.add(new Random().nextInt() + "kksjaldfjlaksjdflkjasdlkfjalkjdf");
}
});
th

本文通过一个简单的测试案例探讨了Java中线程执行完毕后是否需要主动移除的问题,并附带了VisualVM的内存监控截图。
最低0.47元/天 解锁文章
6940

被折叠的 条评论
为什么被折叠?



