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還可以避免線程池中線程重複使用時帶來的問題

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