死锁
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
代码实战:
/**
* Created by FireLang on 2017-07-18.
*/
public class DieThread extends Thread{
/**
* 定义两把锁
*/
private String lock1 = "Lock1";
private String lock2 = "Lock2";
/**
* 运行if 或 else 代码
*/
private boolean flag = true;
public DieThread(boolean flag){
//初始化 flag 的值,让它执行 if 或 else 代码
this.flag = flag;
}
/**
* 书写死锁代码
*/
@Override
public void run() {
if(flag){
synchronized (lock1){
System.out.println("进入 IF LOCK1 !!!!!");
synchronized (lock2){
System.out.println("进入 IF LOCK2 !!!!!");
}
}
}else{
synchronized (lock2){
System.out.println("进入 ELSE LOCK2 !!!!!");
synchronized (lock1){
System.out.println("进入 ELSE LOCK1 !!!!!");
}
}
}
}
/**
* 测试代码
* @param args
*/
public static void main(String[] args) {
DieThread d1 = new DieThread(true);
DieThread d2 = new DieThread(false);
d1.start();
d2.start();
}
}