线程的死锁 - 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

⚠️ **GitHub.com Fallback** ⚠️