您的位置 首页 java

JDK5提供的显式锁可中断的锁可设置超时的锁及设置超时时间的弊端

JDK5提供的显式锁

java 5引入 java.util.concurrent 包。

Reentrant lock 提供了显式的 lock unlock 方法,可以突破上述几个限制。

JDK5提供的显式锁ReentrantLock

JDK5提供的显式锁 ReentrantLock 可中断的锁

ReentrantLock 替代内置锁,使用 lockInterruptibly() 方法

上面的代码可以使用 Thread .interrupt() 让线程终止。

JDK5提供的显式锁 ReentrantLock 超时 解决哲学家就餐问题

可以为获取锁的操作设置超时时间。

与lock()相比,tryLock()有超时机制。

上面实现的哲学家就餐问题的代码并不会 死锁 (至少不会无尽地死锁下去)。

活锁

哲学家就餐问题的 tryLock() 方案避免了无尽的死锁,但这并不是一个好的方案。

首先,不能避免死锁——只是提供了从死锁中恢复的手段。

其次,受到活锁现象的影响——如果所有死锁线程同时超时,极有可能再次陷入死锁。虽然死锁没有永远持续下去,但对资源的争夺状况却没有得到任何改善。

减小活锁的几率方法:为每个线程设置不同的超时时间,来减少所有线程同时超时的几率。

文章来源:智云一二三科技

文章标题:JDK5提供的显式锁可中断的锁可设置超时的锁及设置超时时间的弊端

文章地址:https://www.zhihuclub.com/176007.shtml

关于作者: 智云科技

热门文章

网站地图