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

Posted frankcui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程 - synchronized 和 ThreadLocal 有什么区别?相关的知识,希望对你有一定的参考价值。

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

  • Synchronized用于线程间的数据共享
  • ThreadLocal则用于线程间的数据隔离

所以ThreadLocal并不能代替synchronized,Synchronized的功能范围更广(同步机制)。

以上是关于多线程 - synchronized 和 ThreadLocal 有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thre

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

Java多线程-同步:synchronized 和线程通信:生产者消费者模式

Java并发多线程编程——synchronized和Lock区别

java 多线程 Synchronized方法和方法块 synchronized(this)和synchronized(object)的理解

java多线程学习之volatile 和synchronized