可重入锁,可中断锁,公平锁的理解
来源:互联网 发布:淘宝信用最高的商品 编辑:程序博客网 时间:2024/06/07 00:15
线程锁:
1.可重入锁(表明了锁的分配机制):
Synchronized和ReentrantLock都是可重入锁
如果不具备可重入性,method2没有Synchronized,那么A线程会去申请一把锁,而A拥有该对象锁,就会导致线程A一直在申请获取不到的锁
2.可中断锁:
Synchronized是不可中断锁,LOCK为可中断锁
如果线程A正在执行锁中的代码,线程B在等待获取该对象锁,如果等待时间过长,想让B去做其他事情,可以让他自己中断或者在别的线程中断它
3.公平锁:
Synchronized是非公平锁,ReentrantLock和ReentrantReadWriteLock默认是非公平锁,可以开启公平锁
通过有参构造传入布尔值是否开启公平锁,默认不开启公平锁
ReentrantLock方法:
isFair() //判断锁是否是公平锁
isLocked() //判断锁是否被任何线程获取了
isHeldByCurrentThread() //判断锁是否被当前线程获取了
hasQueuedThreads() //判断是否有线程在等待该锁
1.可重入锁(表明了锁的分配机制):
Synchronized和ReentrantLock都是可重入锁
比如当一个线程执行到Synchronized方法method1,而method1方法中调用了另一个Synchrogazed方法method2
此时线程不需要重新申请一把锁,可以直接执行method2
class MyClass { public synchronized void method1() { method2(); } public synchronized void method2() { }}
如果不具备可重入性,method2没有Synchronized,那么A线程会去申请一把锁,而A拥有该对象锁,就会导致线程A一直在申请获取不到的锁
2.可中断锁:
Synchronized是不可中断锁,LOCK为可中断锁
如果线程A正在执行锁中的代码,线程B在等待获取该对象锁,如果等待时间过长,想让B去做其他事情,可以让他自己中断或者在别的线程中断它
3.公平锁:
Synchronized是非公平锁,ReentrantLock和ReentrantReadWriteLock默认是非公平锁,可以开启公平锁
根据线程的等待时间来分配锁,比如线程C的等待时间最长,C就获得该锁
public ReentrantLock() { sync = new NonfairSync(); }public ReentrantLock(boolean fair) { sync = (fair)? new FairSync() : new NonfairSync(); }
通过有参构造传入布尔值是否开启公平锁,默认不开启公平锁
ReentrantLock方法:
isFair() //判断锁是否是公平锁
isLocked() //判断锁是否被任何线程获取了
isHeldByCurrentThread() //判断锁是否被当前线程获取了
hasQueuedThreads() //判断是否有线程在等待该锁
阅读全文
0 0
- 关于可重入锁、可中断锁和公平锁的理解
- 可重入锁,可中断锁,公平锁的理解
- 锁:可重入锁 可中断锁 公平锁 读写锁
- 锁:可重入锁,可中断锁,公平锁,读写锁
- 公平锁 非公平锁
- Java实现的公平锁
- Java 中非公平锁与公平锁的区别
- java多线程的公平锁和非公平锁
- Java中公平锁与非公平锁的区别
- Java中ReentrantLock的公平锁和非公平锁
- ReentrantLock的公平锁和非公平锁
- 4.1.9ReentrantLock的公平锁与非公平锁
- ReentrantLock锁的可中断性
- 悲观锁和相比synchronized,ReentrantLock增加了一些高级功能,主要有以下3项:等待可 中断、可实现公平锁,以及锁可以绑定多个条件
- 公平锁与非公平锁
- 公平锁和非公平锁
- 公平锁与非公平锁
- 公平锁与非公平锁
- scel转txt抽取词库
- C# 字符串常见函数
- 哈夫曼压缩与解压
- 神经网络之过拟合(附代码)
- centos下设置允许远程登录mysql
- 可重入锁,可中断锁,公平锁的理解
- Travelling HDU
- 第十五周 项目一 (3)直接选择排序
- STM32 USB 虚拟串口演练
- 【Scikit-Learn 中文文档】大规模计算的策略: 更大量的数据
- map,filter函数,评价统计
- unity 给materials赋值
- Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml.解决安装sdk版本失败问题
- 《TCP/IP详解 卷1》 笔记: TCP的成块数据流