先说答案,不需要。
线程执行完了,线程的引用也没有了,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");
}
});
thread.start();
System.out.println(j++);
}
}