package com.dengfeng.DeaeLock;
public class DeadLock {
public static void main(String[] args) throws InterruptedException {
DeadLockText DLT = new DeadLockText();
Thread T1 = new Thread(DLT);
Thread T2 = new Thread(DLT);
T1.start();
Thread.sleep(3); //此处需要抛出异常
//改变flag的值,然后让俩个线程交换
DLT.flag = false;
T2.start();
}
}
//定义一个多线程任务对象的类 利用第二种方法接了来实现多线程
class DeadLockText implements Runnable{
private Object Lock_A = new Object();
private Object Lock_B = new Object();
//定义了一个boolean变量flag
boolean flag = true;
//重写run方法
public void run() {
//利用双层嵌套实现死锁,写代码千万不能这样写,这只是演示一下死锁
if(flag){
while(true) //加了while接肯定会实现死锁
synchronized (Lock_A) { //同步代码块1
System.out.println(Thread.currentThread().getName()+" if…Lock_A");
synchronized (Lock_B) { //同步代码块2
System.out.println(Thread.currentThread().getName()+" if…Lock_B");
}
}
}else{
//以下同上
while(true)
synchronized (Lock_B) {
System.out.println(Thread.currentThread().getName()+" else…Lock_B");
synchronized (Lock_A) {
System.out.println(Thread.currentThread().getName()+" else…Lock_A");
}
}
}
}
}