import java.util.concurrent.TimeUnit; public class Test5 { static class DeadLock implements Runnable{ String lock1 = ""; String lock2 = ""; public DeadLock(String lock1,String lock2){ this.lock1 = lock1; this.lock2 = lock2; } @Override public void run(){ synchronized (lock1){ System.out.println(Thread.currentThread().getName() + "获取锁!!"); try { TimeUnit.SECONDS.sleep(1); }catch (Exception e){ e.printStackTrace(); } synchronized (lock2){ System.out.println(Thread.currentThread().getName() + "获取锁!!"); } } } } public static void main(String[] args) { new Thread(new DeadLock("lock1","lock2"),"AAA").start(); new Thread(new DeadLock("lock2","lock1"),"BBB").start(); } }
通过jps -l找到死锁PID
然后通jstack PID定位错误原因