synchronized是利用锁的机制,使变量或代码块在某一时该只能被一个线程访问。而ThreadLocal为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的数据共享。而Synchronized却正好相反,它用于在多个线程间通信时能够获得数据共享。即
- Synchronized用于线程间的数据共享
- ThreadLocal则用于线程间的数据隔离
所以ThreadLocal并不能代替synchronized,Synchronized的功能范围更广(同步机制)。