TheadLocal与synchronized

Posted panchangde

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TheadLocal与synchronized相关的知识,希望对你有一定的参考价值。

深入比较TheadLocal模式与synchronized关键字

  ThreadLocal模式synchronized关键字都用于处理多线程并发访问变量的问题,只是二者处理问题的角度和思路不同。

  1)ThreadLocal是一个java类,通过对当前线程中的局部变量的操作来解决不同线程的变量访问的冲突问题。所以,ThreadLocal提供了线程安全的共享对象机制,每个线程都拥有其副本。

  2)Java中的synchronized是一个保留字,它依靠JVM的锁机制来实现临界区的函数或者变量的访问中的原子性。在同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量。此时,被用作“锁机制”的变量时多个线程共享的。

  同步机制(synchronized关键字)采用了“以时间换空间”的方式,提供一份变量,让不同的线程排队访问。而ThreadLocal采用了“以空间换时间”的方式,为每一个线程都提供一份变量的副本,从而实现同时访问而互不影响。

以上是关于TheadLocal与synchronized的主要内容,如果未能解决你的问题,请参考以下文章

内存泄露的原因找到了,罪魁祸首居然是Java TheadLocal

探秘ThreadLocal

ThreadLocal的基本理解

Java 中的 ThreadLocal

java并发之CAS详解

14Java并发性和多线程-Java ThreadLocal