模拟死锁
package com.roocon.thread.t6; public class Demo3 { private Object obj1 = new Object(); private Object obj2 = new Object(); public void a(){ synchronized (obj1){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (obj2){ System.out.println("a"); } } } public void b(){ synchronized (obj2){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (obj1){ System.out.println("b"); } } } public static void main(String[] args) { Demo3 demo3 = new Demo3(); new Thread(new Runnable() { @Override public void run() { demo3.a(); } }).start(); new Thread(new Runnable() { @Override public void run() { demo3.b(); } }).start(); } }
运行结果:
控制台一直在运行,但是无任何输出。
通过命令检测是否真的发生了死锁:
点击线程,检测死锁:
作者:凌晨六点半
出处:http://www.cnblogs.com/sunnyDream/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
如果您认为这篇文章还不错或者有所收获,您可以通过右边的“打赏”功能 打赏我一杯咖啡【物质支持】,也可以点击右下角的【好文要顶】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力!