天天看點

ThreadLocal使用場景,原理

ThreadLocal

1. 先說下 ThreadLocal不能解決多線程間共享資料,他是一個隔離多線程間共享資料的好幫手

2. ThreadLocal是本地線程共享資料

3. 他是以空間換時間

synchronized

1. 解決多線程間共享資料安全的問題

2. 他是以時間換空間的方案,效率差(适用并發量小的時候)

注:

ThreadLocal和Synchonized都用于解決多線程并發通路。

但是ThreadLocal與synchronized有本質的差別。

synchronized是利用鎖的機制,使變量或代碼塊在某一時該隻能被一個線程通路。

而ThreadLocal為每一個線程都提供了變量的副本,使得每個線程在某一時間通路到的并不是同一個對象,這樣就隔離了多個線程對資料的資料共享。

而Synchronized卻正好相反,它用于在多個線程間通信時能夠獲得資料共享。

Synchronized用于線程間的資料共享,而ThreadLocal則用于線程間的資料隔離。

繼續閱讀