物件的保存問題,一直是我們在做程序研究時所關心的。在ThreadLocal中也有著相同的操作,我們可以將物件進行儲存與取得。這需要對ThreadLocal的知識有一定的了解,而且用到了其中的set方法。以下我們就ThreadLocal的儲存與取得進行完整的操作步驟講解,具體內容分享給大家。
1.ThreadLocal的set方法
public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) map.set(this, value); else createMap(t, value); }
透過ThreadLocal的set方法看出,ThreadLocalMap的<k,v>結構中,key儲存的是ThreadLocal本身,而value則是實際儲存的值,也就是說,在ThreadLocalMap裡儲存了當前ThreadLocal所複製的變數副本。
2.ThreadLocal本身不儲存值,在使用中,ThreadLocal是作為一個key,從ThreadLocalMap取得值,從ThreadLocal的get方法也可以看出來:
public T get() { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) { ThreadLocalMap.Entry e = map.getEntry(this); if (e != null) { @SuppressWarnings("unchecked") T result = (T)e.value; return result; } } return setInitialValue(); }
以上就是java ThreadLocal的物件儲存和獲取,關鍵在於掌握其中set的使用。大家如果對於這種方法還不夠熟練,一定要在課後多加練習。