JUC 死锁
一、案例
package com.wt.lock; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class ThreadDemon02 { public static void main(String[] args) { Lock lock1 = new ReentrantLock(); Lock lock2 = new ReentrantLock(); new Thread(()->{ try { lock1.lock(); System.out.println(Thread.currentThread().getName()+">>拿到锁1, 需要锁2"); try { lock2.lock(); System.out.println(Thread.currentThread().getName()+">>拿到锁2"); } finally { lock2.unlock(); } } finally { lock1.unlock(); } }, "AA").start(); new Thread(()->{ try { lock2.lock(); System.out.println(Thread.currentThread().getName()+"<<拿到锁2,需要锁1"); try { lock1.lock(); System.out.println(Thread.currentThread().getName()+"<<拿到锁1"); } finally { lock1.unlock(); } } finally { lock2.unlock(); } },"BB").start(); } }
二、判断


终端输入命令
Jps -l 查看死锁信息列表
Jstack 号码 查看详细信息

浙公网安备 33010602011771号