多线程 - synchronized 和 ThreadLocal 有什么区别?

总结

synchronized 和 ThreadLocal两个是相反的概念:

  • Synchronized 保证数据的同步,因为它就是用于线程间的数据共享
  • ThreadLocal 不保证数据的同步,只保证线程间数据的隔离

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

 

posted on 2020-03-09 00:28  frank_cui  阅读(400)  评论(0编辑  收藏  举报

导航

levels of contents