ThreadLocal
1. 先說下 ThreadLocal不能解決多線程間共享數據,他是一個隔離多線程間共享數據的好幫手
2. ThreadLocal是本地線程共享數據
3. 他是以空間換時間
synchronized
1. 解決多線程間共享數據安全的問題
2. 他是以時間換空間的方案,效率差(適用並發量小的時候)
注:
ThreadLocal和Synchonized都用於解決多線程並發訪問。
但是ThreadLocal與synchronized有本質的區別。
synchronized是利用鎖的機制,使變量或代碼塊在某一時該只能被一個線程訪問。
而ThreadLocal為每一個線程都提供了變量的副本,使得每個線程在某一時間訪問到的並不是同一個對象,這樣就隔離了多個線程對數據的數據共享。
而Synchronized卻正好相反,它用於在多個線程間通信時能夠獲得數據共享。
Synchronized用於線程間的數據共享,而ThreadLocal則用於線程間的數據隔離。
注:這篇文章說了:https://blog.csdn.net/liuhaiabc/article/details/78077529