编写程序,实现死锁的情况。
请编写程序,演示一下死锁的情况。
public class Test {
public static void main(String[] args) {
System.out.println("嗨客网(www.haicoder.net)\n");
final Object A = new Object();
final Object B = new Object();
new Thread("线程A"){
@Override
public void run() {
synchronized (A){
System.out.println(Thread.currentThread().getName() + " 获取到 A 锁");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " 等待 B 锁...");
synchronized (B){
System.out.println(Thread.currentThread().getName() + " 获取到 B 锁");
}
}
}
}.start();
new Thread("线程B"){
@Override
public void run() {
synchronized (B){
System.out.println(getName() + " 获取到 B 锁");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " 等待 A 锁...");
synchronized (A){
System.out.println(Thread.currentThread().getName() + " 获取到 A 锁");
}
}
}
}.start();
}
}
运行结果如下图:
以上案例演示了死锁案例。