线程池中使用 ThreadLocal 为什么要及时 remove?
参考答案
线程池工作线程会被复用,若任务结束后未清理 ThreadLocal,下一个任务可能读到上一个任务的数据,关联对象也可能被线程长期持有。
题目解析
通常在 try/finally 中 remove;ThreadLocal 让值按线程隔离,不会自动解决跨任务传递或所有内存泄漏问题。
线程池工作线程会被复用,若任务结束后未清理 ThreadLocal,下一个任务可能读到上一个任务的数据,关联对象也可能被线程长期持有。
通常在 try/finally 中 remove;ThreadLocal 让值按线程隔离,不会自动解决跨任务传递或所有内存泄漏问题。