reentrantLock、readWriteLock、AQS

reentrantLock、readWriteLock、AQS,第1张

reentrantLock、readWriteLock、AQS Lock接口使用
    void lock() 获取锁(不死不休)方法不允许Thread.interrupt中断,即使检测到Thread.isInterrupted,一样会继续尝试获取锁,失败则继续休眠。只是在最后获取锁成功后再把当前线程置为interrupted状态,然后再中断线程。 bollean tryLock() 获取锁(浅尝辄止,尝试获取锁) boolean tryLock(long time,TimeUnit unit)throws InterruptedExcepiton 获取锁(过时不候,在指定时间内尝试获取锁) void lockInterruptibly() throws InterruptedExcepion; 获取锁(任人摆布),允许在等待时由其它线程调用等待线程的Thread.interrupt方法来中断等待线程的等待而直接返回,这时不用获取锁,而会抛出一个InterruptedException。 void unlock(); 释放锁,

结论: 1. lock()最常用;lockInterruptibly()方法一般更昂贵,只有真的需要相应中断时,才是用。

Condition 和Lock一起使用

调用condition.signal/await(会释放锁)前必须获取到该锁才能执行,和synchronization方法体内调用wait/notify一样。如下面代码:

private  static 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5718872.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存