問(wèn):ThreadLocal底層的map是線程安全的嗎?
不是線程安全的,也不需要為它設(shè)置線程安全的鎖。ThreadLocal的底層實(shí)現(xiàn)map是Thread類(lèi)的一個(gè)屬性。既然位于Thread內(nèi)部,即不需要關(guān)注它是不是安全的,因?yàn)樗蔷€程私有的屬性而已。
問(wèn):ThreadLocal會(huì)產(chǎn)生內(nèi)存泄漏嗎?
會(huì),原因在于key是弱引用,在觸發(fā)full gc的時(shí)候key會(huì)被回收,而value是強(qiáng)引用,無(wú)法回收。則map也不會(huì)被回收。但是由于key回收的原因,線程無(wú)法獲取value。則變成了一個(gè)存在map也存在value卻無(wú)法訪問(wèn)的問(wèn)題。