死锁是有几率的,下面写一个出现死锁概率比较大的例子。开发过程中要避免死锁现象的发生
假设有两把锁
package com.commons.commons.deadlock;
/**
* @Author zhaomengxia
* @create 2019/10/15 10:42
*/
public class Lock {
static Object lock1=new Object();
static Object lock2=new Object();
}
package com.commons.commons.deadlock;
/**
* @Author zhaomengxia
* @create 2019/10/15 10:42
*/
public class DeadLockThread extends Thread{
//默认为0
int flag;
@Override
public void run() {
if (flag==1){
synchronized (Lock.lock1){
System.out.println("进入锁1");
synchronized (Lock.lock2){
System.out.println("进入锁1中的锁2");
}
}
}else{
synchronized (Lock.lock2){
System.out.println("进入锁2");
synchronized (Lock.lock1){
System.out.println("进入锁2中的锁1");
}
}
}
}
}
package com.commons.commons.deadlock;
/**
* @Author zhaomengxia
* @create 2019/10/15 10:41
*/
public class DeadLockTest {
public static void main(String[] args) {
DeadLockThread deadLockThread=new DeadLockThread();
deadLockThread.flag=1;//该线程的flag赋值为1增加出现死锁的概率
DeadLockThread deadLockThread1=new DeadLockThread();
deadLockThread.start();
deadLockThread1.start();
}
}
运行结果