mysql死锁的四个条件
四个条件
1、互斥条件:一个资源每次只能被一个进程使用。
2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
3、不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
实例
代码语言:javascript复制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电脑