线程的死锁 - morris131/morris-book GitHub Wiki
线程的死锁是一个经典的多线程问题,因为不同的线程都在等待不可能被释放的锁,从而导致所有的任务都无法继续完成。在多线程中,死锁是必须避免的,因为这会造成线程的假死。
package com.morris.ch1;
public class DeadLockThread {
public static void main(String[] args) {
A a = new A();
new Thread(() -> a.method1()).start();
new Thread(() -> a.method2()).start();
}
}
class A {
Object object1 = new Object();
Object object2 = new Object();
public void method1() {
synchronized (object1) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (object2) {
}
}
}
public void method2() {
synchronized (object2) {
synchronized (object1) {
}
}
}
}
查看应用进程id jps命令
查看线程状态 jstack 进程id