`
六十三
  • 浏览: 44097 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ReentrantReadWriteLock 与 synchronized 性能差别

 
阅读更多

synchronized 可以认为默任为当前对像加了一把ReentrantLock锁,

所以,会出现一个线程读另一个线程不能进入的现像 。

这样就造成不论读写,只要线程进入synchronized代码就互斥。

 

ReentrantReadWriteLock 其实是加了两把锁。

写锁排斥读、写 ,

读锁只排斥 写,所以能达到并发读的效果。

克服了synchronized 读互斥的缺点

 

所以说 ReentrantReadWriteLock 比synchronized 快

 

ReentrantReadWriteLock被大量使用在缓存中,因为缓存中的对象总是被共享大量读操作,偶尔修改这个对象中的子对象,比如状态,那么只要通过ReentrantReadWriteLock来更新子对象就可以了








2011-02-23  david.wang

 

分享到:
评论

相关推荐

    第15讲 synchronized和ReentrantLock有什么区别呢?1

    然而,两者之间存在一些显著的区别,这些差异体现在功能、灵活性、性能以及使用场景上。 首先,synchronized是Java内置的同步机制,它提供了互斥和可见性保证。在Java 5之前,它是唯一的同步手段。synchronized可以...

    简单了解synchronized和lock的区别

    了解synchronized和lock的区别 synchronized是Java语言中的一个关键字,用于线程同步,主要用于解决多线程之间的竞争问题。它可以将某个方法或代码块锁定,使得只有一个线程可以执行该方法或代码块,其他线程只能...

    Java 多线程与并发(12-26)-JUC锁- ReentrantReadWriteLock详解.pdf

    ReentrantReadWriteLock包含两种类型的锁:读锁(ReadLock)和写锁(WriteLock),它们可以独立地被获取和释放,从而提高了多线程环境下的并发性能。 1. **为什么需要ReentrantReadWriteLock?** - ...

    Synchronized 和 Lock 的区别和使用场景

    `ReentrantReadWriteLock`实现了ReadWriteLock接口,提供可重入的读写锁功能。 四、使用场景 1. Synchronized更适合于简单且无需复杂控制的同步场景,如共享资源的简单增加、减少等操作,或作为类级别的互斥访问。...

    Java性能优化比较

    理解锁的概念,包括内置锁(synchronized)、显式锁(Lock),以及读写锁(ReentrantReadWriteLock),可以帮助我们编写更安全、高效的并发代码。另外,使用并发容器,如ConcurrentHashMap,比传统的同步容器(如...

    panda-demo.zip

    在这个名为“panda-demo.zip”的项目中,作者深入探讨了两种主要的同步工具:ReadWriteLock(读写锁)和Synchronized,通过实际的代码实现来比较它们在性能上的差异。下面将详细解释这两种同步机制以及它们的应用...

    介绍了java中各种存在的锁机制、面试必备

    1. `synchronized`与`ReentrantLock`的区别和应用场景。 2. 如何使用`ReentrantLock`实现公平锁和非公平锁。 3. `volatile`如何保证可见性和有序性,但不保证原子性。 4. `Atomic`类的工作原理和使用场景。 5. `...

    Java性能优化技巧集锦

    "Java性能优化技巧集锦"涵盖了大量用于改进Java代码质量和性能的策略与技术。以下是一些核心的Java性能优化知识点: 1. **内存管理**:理解Java内存模型,包括堆内存(Heap)和栈内存(Stack),以及垃圾收集机制。...

    Java并发学习笔记(二)——Synchronized关键字与ReetrantLock同步锁

    【Java并发学习笔记(二)——Synchronized关键字与ReentrantLock同步锁】 在Java多线程编程中,确保线程安全是非常重要的。Synchronized关键字和ReentrantLock是两种常见的同步机制,它们都用于保证线程的原子性、...

    java锁机制详解.pdf

    - **synchronized代码块**:与synchronized方法类似,但更细粒度。它可以锁定某个特定的对象,只对代码块内的代码进行同步,从而减少锁的持有时间,提高效率。这被称为同步代码块或监视器锁。 2. **锁的原理与行为...

    性能调优指南--计算机系统Java应用程序(不断完善)代码示例

    6. **锁优化**:使用轻量级锁(如synchronized关键字)、读写锁(java.util.concurrent.locks.ReentrantReadWriteLock)或并发集合(如ConcurrentHashMap)来减少锁竞争。 7. **延迟加载(Lazy Initialization)**...

    contention-profiling:ReentrantLock 和 ReentrantReadWriteLock 上的配置文件争用

    `ReentrantLock`是可重入的互斥锁,它实现了与`synchronized`关键字类似的功能,但提供了更灵活的用法。可重入意味着一个线程可以获取同一锁多次而不必担心死锁。`ReentrantLock`提供了一种公平性选项,这意味着线程...

    笔记-4、显式锁和AQS1

    Condition接口与Lock配合使用,提供了更加精确的线程等待和通知机制。相比于synchronized的wait()和notify(),Condition允许创建多个条件变量,每个条件对应一个等待队列,从而可以实现更复杂的同步逻辑。 **...

    JUC并发编程与源码分析视频课.zip

    此外,还会涉及volatile关键字的作用及其与synchronized的区别。 3. **并发容器**:如ArrayList、LinkedList、Vector等线程不安全的集合,以及它们的线程安全替代品如ConcurrentHashMap、CopyOnWriteArrayList等。...

    JVM调优总结与ava虚拟机:JVM高级特性与最佳实践(最新第二版)

    《JVM调优总结》与《Java虚拟机:JVM高级特性与最佳实践》是两本深入探讨Java虚拟机(JVM)的书籍,对于Java开发者来说,它们提供了丰富的知识和实践经验,尤其对于想要理解JVM工作原理以及进行性能优化的专业人士更...

    Java分布式应用学习笔记06浅谈并发加锁机制分析

    `ReentrantReadWriteLock`是一种特殊的锁机制,它支持读锁和写锁两种类型,主要用于解决读多写少的场景下的性能问题。当多个线程同时进行读操作时,不会相互阻塞,可以并行执行。但是当一个线程正在执行写操作时,...

    java多线程安全性基础介绍.pptx

    java多线程安全性基础介绍 线程安全 正确性 什么是线程安全性 原子性 ... 性能 线程活跃与线程饥饿 同步工具类 原子操作类 AtomicInteger等 相当于加上synchronized 也有些利用硬件底层能力CAS

    Java concurrency之锁_动力节点Java学院整理

    - Condition:Condition与Lock配合使用,提供了与`synchronized`中`wait()`和`notify()`类似的功能,但更强大。一个Lock可以关联多个Condition,使得线程间通信更加灵活。 - ReentrantLock:作为独占锁,...

    【BAT必备】并发编程锁面试题

    **3.1 synchronized与ReentrantLock的区别** - **灵活性**:ReentrantLock提供了更多的锁操作选项,如尝试加锁、限时等待等。 - **性能**:JDK 5.0之后,synchronized进行了大量优化,但在某些场景下ReentrantLock...

    读者写者问题java源代码

    在Java中,我们可以利用`synchronized`关键字、`wait()`、`notify()`和`notifyAll()`方法以及`ReentrantReadWriteLock`等工具来实现读者写者问题的解决方案。 首先,我们来看看如何使用`synchronized`关键字来实现...

Global site tag (gtag.js) - Google Analytics