目录
1.创建死锁的类
2.IDEA使用jstatck
2.1查看死锁所占用的进程号
2.2 使用jstack+进程号查看具体情况
2.3得出结论
3.win+r使用jconsole命令
3.1根据进程号进入图形化页面
3.2选择不安全的连接 进入如下页面
3.3查看死锁状态
1.创建死锁的类
@Slf4j public class TestDeadLock { public static void main(String[] args) { test1(); } private static void test1() { Object A = new Object(); Object B = new Object(); Thread t1 = new Thread(() -> { synchronized (A) { log.debug("lock A"); try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (B) { log.debug("lock B"); log.debug(" *** 作..."); } } }, "t1"); Thread t2 = new Thread(() -> { synchronized (B) { log.debug("lock B"); try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (A) { log.debug("lock A"); log.debug(" *** 作..."); } } }, "t2"); t1.start(); t2.start(); } }2.IDEA使用jstatck 2.1查看死锁所占用的进程号 2.2 使用jstack+进程号查看具体情况 2.3得出结论
可以看到两个线程都拿着一把锁,等待对方锁释放,就进入了死锁状态
3.win+r使用jconsole命令 3.1根据进程号进入图形化页面 3.2选择不安全的连接 进入如下页面 3.3查看死锁状态
得出结果
可以看到两个线程都拿着一把锁,等待对方锁释放,就进入了死锁状态
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)