看上圖知就知道當 k == null 的時候就會執行清理計劃,可是這並無什麼卵用,
雖然ThreadLocalMap對於 ThreadLocal的引用是弱引用,可是大部分場景,
以下圖所示 ThreadLocal自己都是被static 靜態變量引用的,
, 也就是說 上圖中(k == null)90%的狀況下並不會發生。線程
除非你的ThreadLocal只是被單個線程棧引用,當這個線程中的棧幁對ThreadLocal的引用不存在了,
上圖中的 k == null 纔會成立,並且成立的條件也要看虛擬機的回收機制,
若是運行中沒有觸發GC k == null 依然不會成立,固然這是小几率事件。blog