`
flyfoxs
  • 浏览: 298107 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

synchronized 和reentrantlock的优缺点

 
阅读更多

多线程之--2种办法让HashMap线程安全

多线程之--synchronized 和reentrantlock的优缺点

多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync)

 

reentrantlock的优点

  • 可以添加多个检控条件, 如果使用synchronized,则只能使用一个. 使用 reentrant locks 可以有多个wait()/notify() 队列. [译注:直接多new 几个ReentrantLock就可以了,不同的场景/条件用不同的ReentrantLock ]
  • 可以控制线程得到锁的顺序,也就是有公平锁(按照进入顺序得到资源),也可以不按照顺就像.synchronized 一样.
  • 可以查看锁的状态, 锁是否被锁上了.
  • 可以查看当前有多少线程再等待锁.

 

reentrantlock的缺点

  • 需要使用import 引入相关的Class
  • 不能忘记在finally 模块释放锁,这个看起来比synchronized 丑陋
  • synchronized可以放在方法的定义里面, 而reentrantlock只能放在块里面. 比较起来, synchronized可以减少嵌套

  

参考:

http://stackoverflow.com/questions/9072422/difference-between-synchronized-and-reentrantlock-pros-and-cons

0
0
分享到:
评论

相关推荐

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

    总结来说,synchronized和ReentrantLock都是Java并发编程中的重要工具,它们各有优缺点。选择使用哪一个取决于具体的应用场景和性能需求。理解它们的工作原理,以及如何在实际项目中有效利用,是每个Java开发者必备...

    Lock、Synchoronized和ReentrantLock的使用

    Lock、Synchronized 和 ReentrantLock 的使用 Lock、Synchronized 和 ReentrantLock 是 Java 中三种常用的同步机制,每种机制都有其特点和使用场景。下面对这三种机制进行详细的分析和比较。 一、Synchronized ...

    wangwang4git#just-do#简单说说Synchronized,ReentrantLock1

    背景,应该就是Synchronized的缺点Synchronized产生原因,原子性(Atomicity)与可见性(visibility),其中可见性涉及到JM

    深入理解java内置锁(synchronized)和显式锁(ReentrantLock)

    深入理解Java内置锁(synchronized)和显式锁(ReentrantLock) Java中有两种锁机制:内置锁(synchronized)和显式锁(ReentrantLock)。内置锁是Java语言提供的一种同步机制,使用synchronized关键字声明的方法或...

    详解Java多线程编程中互斥锁ReentrantLock类的用法

    ck的使用场景与特性 在Java多线程编程中,ReentrantLock提供了更灵活的锁管理机制,相比synchronized,...然而,使用ReentrantLock也需要额外的编程复杂性,因此在选择使用哪种锁时,应根据具体应用场景权衡其优缺点。

    并发编程 70 道面试题及答案.docx

    * synchronized 优点是简单易用,缺点是可能会引起死锁和性能问题。 2. volatile volatile 是 Java 的一条关键字,用于修饰变量,保证变量在多个线程之间的可见性和禁止指令重排序优化。 * volatile 的作用是:1...

    Java多线程同步.pdf

    在Java语言中,有两个特殊的类用于多线程同步,分别是synchronized关键字和ReentrantLock类。 1. synchronized关键字 synchronized关键字是Java语言中的一种同步机制,用于对方法或者代码块进行同步。synchronized...

    Java并发编程:Synchronized及其实现原理

    尽管Synchronized提供了线程安全的保障,但其缺点也很明显,如可能导致死锁、性能开销较大等。在某些场景下,可以考虑使用其他并发控制机制,如ReentrantLock可重入锁、Semaphore信号量、ReadWriteLock读写锁等。 ...

    面试必备之乐观锁与悲观锁.docx

    Java 中的 synchronized 和 ReentrantLock 等独占锁就是悲观锁思想的实现。悲观锁的优点是可以确保数据的一致性,防止数据不一致和混乱的情况。但是,悲观锁也有缺点,即锁的开销较高,可能会导致性能下降。 乐观锁...

    java多线程之并发锁

    但是,synchronized 关键字有一些缺点,例如它不能中断锁的获取过程,不能在锁的获取过程中抛出异常等。 Lock 接口是 Java 5.0 中引入的,它提供了一个更加灵活和高效的锁机制。Lock 接口可以实现更加细粒度的锁...

    jvm调优总结

    3. 同步机制:合理使用synchronized、ReentrantLock等同步工具,平衡并发性能和线程安全。 五、性能监控与诊断工具 1. JConsole:提供JVM的实时监控,包括内存、线程、类加载、MBean等信息。 2. VisualVM:集成了...

    Java多线程并发编程和锁原理解析

    每种机制都有优缺点与各自的适用场景,必须熟练掌握他们的特点才能在Java多线程应用开发时得心应手。 synchronized是Java中最常用的锁机制,使用synchronized关键字可以实现多线程的同步操作,保证在同一个时刻最多...

    并发编程及答案(上).pdf

    - `java.util.concurrent`包中的`ReentrantLock`类提供了与`synchronized`相似的功能,但具有更多灵活性,如可中断的等待和公平锁等特性。 了解并熟练掌握`synchronized`关键字的使用,对于编写高效、安全的并发...

    45家公司的java面试题目,欢迎下载

    - 单例模式:了解不同实现单例的方式及其优缺点。 - 工厂模式:理解简单工厂、工厂方法和抽象工厂模式。 - 代理模式:在Java中实现静态和动态代理。 11. **JVM**: - 类加载过程:了解类的加载、验证、准备、...

    java的Lock锁原理详解.docx

    总之,synchronized和Lock是Java中两种不同的锁机制,各有优缺点。synchronized使用简单,但控制有限;Lock提供了更多的控制选项,但也需要更高的编程技巧。在选择锁机制时,应根据具体场景和需求来决定使用哪种方式...

    Java多线程同步机制的应用分析.pdf

    多线程编程的优点是可以提高系统的性能和效率,但同时也存在一些缺点,例如线程之间的冲突和错误。Java多线程同步机制可以帮助开发者避免这些问题,提高系统的可靠性和安全性。 在售票系统中,Java多线程同步机制...

    java笔试面试300个

    8. **设计模式**:了解常见的设计模式,如单例、工厂、观察者、装饰器、代理等,理解它们的应用场景和优缺点。 9. **JVM**:内存模型、垃圾回收机制、性能优化、类加载过程。 10. **数据库**:SQL语句的编写,索引...

    JVM与性能优化知识点整理.zip

    - **GC策略**:不同的JVM版本提供了不同的垃圾收集器,如Serial、Parallel、CMS、G1、ZGC等,每种收集器有其适用场景和优缺点。 - **GC调优**:包括调整堆大小、设置新生代和老年代比例、选择合适的GC算法、控制...

    java多线程实现有序输出ABC

    java多线程实现有序输出ABC可以使用多种方式实现,其中synchronized和ReentrantLock是两种常见的实现方式。synchronized实现简单,但需要频繁的锁机制操作,可能会导致性能下降。ReentrantLock和Condition可以实现...

    多线程实例

    本实例主要探讨了内部锁(synchronized)、重入锁(ReentrantLock)、读写锁(ReadWriteLock)、Condition以及信号量(Semaphore)等与线程同步相关的概念及其原理。以下是对这些知识点的详细讲解: 1. 内部锁...

Global site tag (gtag.js) - Google Analytics