重入锁死

Java教程 发布时间:2021-10-18 14:55:09 阅读数:3241 1
重入死锁的概念:当一个线程在两次调用lock()间没有调用unlock()方法,那么第二次调用lock()就会被阻塞,
我们将这种现象称之为“重入死锁”
---------------------------------------------------------
重入锁死与死锁和嵌套管程锁死非常相似
锁和读写锁两篇文章中都有涉及到重入锁死的问题
---------------------------------------------------------
当一个线程重新获取锁,读写锁或其他不可重入的同步器时,就可能发生重入锁死
例:
可重入锁代码
public class Reentrant{
    public synchronized outer(){
        inner();
    }
    public synchronized inner(){
        //业务代码
    }
}
不可重入锁代码
public class Lock{
    private boolean isLocked = false;
    public synchronized void lock()
        throws InterruptedException{
        while(isLocked){
            wait();
        }
        isLocked = true;
    }

    public synchronized void unlock(){
        isLocked = false;
        notify();
    }
} 
如何避免重入死锁
 1.避免再次获取持有锁
 2.使用可重入锁
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202110/1492.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者