简单死锁例子
来源:互联网 发布:网络菜市场 编辑:程序博客网 时间:2024/06/07 16:38
/* * * 一个简单的死锁类 * 当DeadLock类的对象flag==1时(td1),先锁定o1,睡眠500毫秒 * 而td1在睡眠的时候另一个flag==0的对象(td2)线程启动,先锁定o2,睡眠500毫秒 * td1睡眠结束后需要锁定o2才能继续执行,而此时o2已被td2锁定; * td2睡眠结束后需要锁定o1才能继续执行,而此时o1已被td1锁定; * td1、td2相互等待,都需要得到对方锁定的资源才能继续执行,从而死锁。 */public class DeadLock implements Runnable { public int flag = 1; private static Object o1 = new Object(), o2 = new Object(); @Override public void run() { System.out.println("flag=" + flag); if (flag == 1) { synchronized (o1) { try { Thread.sleep(500); } catch (Exception e) { e.printStackTrace(); } synchronized (o2) { System.out.println("1"); } } } if (flag == 0) { synchronized (o2) { try { Thread.sleep(500); } catch (Exception e) { e.printStackTrace(); } synchronized (o1) { System.out.println("0"); } } } } public static void main(String[] args) { DeadLock td1 = new DeadLock(); DeadLock td2 = new DeadLock(); td1.flag = 1; td2.flag = 0; // 线程1执行时,锁定对象2这个资源,等锁定对象1后解锁 new Thread(td1).start(); // 线程2执行时,锁定对象1这个资源,等锁定对象2后解锁 new Thread(td2).start(); }}
使用命令,查看当前运行程序的pid
jps
然后根据pid来使用jstack查看程序运行情况
jstack 7588
阅读全文
0 0
- 简单的死锁例子
- 简单的死锁例子
- 简单死锁例子
- 死锁简单例子
- 一个简单的死锁例子
- 一个死锁的简单例子
- 一个简单的死锁例子
- 一个死锁的简单例子
- 一个简单死锁的例子
- 一个简单的死锁例子
- Java死锁的简单例子
- 简单的死锁的例子
- java写一个死锁的简单例子
- Java一个简单的死锁例子
- Java编写一个简单死锁例子
- Java线程死锁的简单例子
- Java产生死锁的一个简单例子
- Java产生死锁的一个简单例子
- 分数拆开
- bzoj3620: 似乎在梦中见过的样子
- 回文子序列个数 C++
- [Android]Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with
- 音频开发
- 简单死锁例子
- 8.8 迷之阶梯 2530
- POI设置自定义的RGB背景颜色
- Android-------------实现购物车
- Redis两种存储机制(持久化)的比较
- vue2.0全家桶+elementui开发遇到的脑残问题
- O-超大型LED显示屏
- HTTP中GET与POST的区别
- 数据库——总结(1)