ThreadLocal通過一個Map來為每個線程都持有一個變量副本。
這個map以當前線程為key。與synchronized相比,ThreadLocal是以空間換時間的策略來實現多線程程序。
synchronized是利用鎖的機制,使變量或代碼塊在某一時該只能被一個線程訪問。
而ThreadLocal為每一個線程都提供了變量的副本,使得每個線程在某一時間訪問到的并不是同一個對象,
這樣就隔離了多個線程對數據的數據共享。
而Synchronized卻正好相反,它用于在多個線程間通信時能夠獲得數據共享。
Synchronized用于線程間的數據共享,而ThreadLocal則用于線程間的數據隔離。
當然ThreadLocal并不能替代synchronized,它們處理不同的問題域。
Synchronized用于實現同步機制,比ThreadLocal更加復雜。