ThreadLocal杂谈

1、为什么要用static修饰ThreadLocal?

避免每一个线程都new一个ThreadLocal

2、static坏处?

ThreadLocalMap中Entry自动清除失效功能失效。Entry继承自WeakReference,WeakReference关联弱引用对象ThreadLocal无法被垃圾回收,Entry也无法自动清除

3、ThreadLocal内存泄露原因?

ThreadLocalMap中Entry自动清除功能,只有在调用get和rehash起作用,非实时清除;且调用get时也只可能清除一部分;再加上如果使用了static修饰ThreadLocal,自动清除失效。所以一定要手动remove,同时手动remove还可以避免线程池中线程重复使用时带来的问题

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章