另外,說ThreadLocal使得各線程能夠保持各自獨立的一個對象,這個對象的創建并不是通過ThreadLocal.set()來實現的,set()并不會做什么對象的拷貝,而是每個線程之前已經創建好的對象。通 過ThreadLocal.set()將這個新創建的對象的引用以當前線程為key,保存TheadLocal的一個map中,執行 ThreadLocal.get()時,各線程從map中取出以當前線程為key的對象,因此取出來的是各自自己線程中的對象。
下面來看看ThreadLocal的實現原理(jdk1.5源碼)
Powered by: BlogJava Copyright © semovy