美文网首页
JDK5提供的显式锁可中断的锁可设置超时的锁及设置超时时间的弊端

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

作者: 每天学点编程 | 来源:发表于2018-02-19 03:11 被阅读14次

    请关注我的微信公众号

    个人微信公众号

    技术交流群 (仅作技术交流):642646237

    ​请关注我的头条号:

    JDK5提供的显式锁

    Java 5引入java.util.concurrent包。
    ReentrantLock提供了显式的lockunlock方法,可以突破上述几个限制。

    JDK5提供的显式锁ReentrantLock

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

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

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

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

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



    与lock()相比,tryLock()有超时机制。
    上面实现的哲学家就餐问题的代码并不会死锁(至少不会无尽地死锁下去)。

    活锁

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

    首先,不能避免死锁——只是提供了从死锁中恢复的手段。
    其次,受到活锁现象的影响——如果所有死锁线程同时超时,极有可能再次陷入死锁。虽然死锁没有永远持续下去,但对资源的争夺状况却没有得到任何改善。
    减小活锁的几率方法:为每个线程设置不同的超时时间,来减少所有线程同时超时的几率。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/ytubtftx.html