Synchronized与ReentrantLock(重入锁)的区别
程序员文章站
2022-04-12 22:09:13
这两种方式最大区别就是对于Synchronized来说,它是java语言的关键字,是原生语法层面的互斥,需要jvm实现。而ReentrantLock它是JDK 1.5之后提供的API层面的互斥锁,需要lock()和unlock()方法配合try/finally语句块来完成。很明显Synchronized的使用比较方便简洁,并且由编译器去保证锁的加锁和释放,而ReenTrantLock需要手工声明来加锁和释放锁。synchronized 竞争锁时会一直等待;ReentrantLock 可以尝试获取锁,并得...
这两种方式最大区别就是对于Synchronized来说,它是java语言的关键字,是原生语法层面的互斥,需要jvm实现。而ReentrantLock它是JDK 1.5之后提供的API层面的互斥锁,需要lock()和unlock()方法配合try/finally语句块来完成。
很明显Synchronized的使用比较方便简洁,并且由编译器去保证锁的加锁和释放,而ReenTrantLock需要手工声明来加锁和释放锁。
synchronized 竞争锁时会一直等待;ReentrantLock 可以尝试获取锁,并得到获取结果
synchronized 获取锁无法设置超时;ReentrantLock 可以设置获取锁的超时时间
synchronized 无法实现公平锁;ReentrantLock 可以满足公平锁,即先等待先获取到锁
synchronized 控制等待和唤醒需要结合加锁对象的 wait() 和 notify()、notifyAll();ReentrantLock 控制等待和唤醒需要结合 Condition 的 await() 和 signal()、signalAll() 方法
本文地址:https://blog.csdn.net/eric_aprilwang/article/details/107675449
推荐阅读
-
多线程通信的两种方式? (可重入锁ReentrantLock和Object)
-
synchronized与ReentrantLock实现共享资源的消费
-
面试刷题16:synchronized和ReentrantLock的区别?
-
lock与synchronized的区别
-
linux中各种锁机制的使用与区别详解
-
关于synchronized和ReentrantLock实现卖票功能以及synchronized的对象锁和全局锁验证
-
浅谈Java中的锁:Synchronized、重入锁、读写锁
-
腾讯面试笔记:volatile关键字与synchronized关键字在内存的区别
-
synchronized与ReentrantLock的并发性能对比
-
Java并发编程之ReentrantLock可重入锁的实例代码