Discuss / Java / 线程不会被复用的情况

线程不会被复用的情况

Topic source

实时上ThreadLocal本身不会存储任何数据,ThreadLocal.set方法是将值存储到Thread线程本身的ThreadLocalMap里面了。如果线程执行完毕就死亡了,实时上是不需要调用ThreadLocal的remove方法的。因为ThreadLocalMap是属于线程对象的,线程都死亡了,ThreadLocalMap里面存的值自然就不存在了。

但是,大家一定要注意:真正的项目开发中基本上都是从线程池里面获取线程的,所以线程执行完并不会死亡,而是会被线程池复用,所以大家一定要按照廖老师的做法在finally里面调用ThreadLocal的remove方法,或者按照廖老师的做法使用AutoCloseable方法自动清除。

^\d{2}$

#2 Created at ... [Delete] [Delete and Lock User]

我明白了

F

#3 Created at ... [Delete] [Delete and Lock User]

有必要这么大字吗

:)

#4 Created at ... [Delete] [Delete and Lock User]

6

#5 Created at ... [Delete] [Delete and Lock User]

讲得很好

以后不要再讲了


  • 1

Reply