mysql死锁的四个条件

743次阅读
没有评论

mysql死锁的四个条件

四个条件

1、互斥条件:一个资源每次只能被一个进程使用。

2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

3、不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

实例

public class DeadLockDemo {
    public static Object one = new Object();
    public static Object two = new Object();
    public static void main(String[] args) {
        new Thread(() -> {
         //获取第一个锁,并且不会被其他线程抢占
            synchronized (one) {
                try {
                    System.out.println(Thread.currentThread().getName() + "获得one锁,等待two锁。");
                    //确保第二个线程此时先获取到了第二个锁
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //请求获取第二锁,并且任然持有第一个锁
                synchronized (two) {
                    System.out.println(Thread.currentThread().getName() + "获得two锁。");
                }
            }
        }).start();
        new Thread(() -> {
            synchronized (two) {
                try {
                    System.out.println(Thread.currentThread().getName() + "获得two锁,等待one锁。");
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (one) {
                    System.out.println(Thread.currentThread().getName() + "获得one锁。");
                }
            }
        }).start();
    }
}

以上就是mysql死锁的四个条件,希望对大家有所帮助。更多mysql学习指路:MySQL

推荐操作系统:windows7系统、mysql5.8、DELL G3电脑

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-19发表,共计1451字。
新手QQ群:570568346,欢迎进群讨论 Python51学习