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