JAVA实现的一个简单的死锁(附解释)
来源:互联网 发布:爬虫软件官方下载 编辑:程序博客网 时间:2024/06/06 01:50
public class DeadLockTest implements Runnable{ private int flag; static Object o1 = new Object(), o2 = new Object(); //静态的对象,被DeadLockTest的所有实例对象所公用 public void run(){ System.out.println(flag); if(flag == 0){ synchronized(o1){ try{ Thread.sleep(500); } catch(Exception e){ e.printStackTrace(); } synchronized(o2){ } } } if(flag == 1){ synchronized(o2){ try{ Thread.sleep(500); } catch(Exception e){ e.printStackTrace(); } synchronized(o1){ } } } } public static void main(String[] args){ DeadLockTest test1 = new DeadLockTest(); DeadLockTest test2 = new DeadLockTest(); test1.flag = 1; test2.flag = 0; Thread thread1 = new Thread(test1); Thread thread2 = new Thread(test2); thread1.start(); thread2.start(); }}解释:在main方法中,实例化了两个实现了Runnable接口的DeadLockTest对象test1和test2,test1的flag等于1,所以在thread1线程执行的时候执行的是run()方法后半部分的代码,test2的flag等于2,所以在thread2线程启动的时候执行的是run()方法前半部分的代码,此时,出现了下列现象:thread1线程占有了o1对象并等待o2对象,而thread2线程占有了o2对象并等待o1对象,而o1和o2又被这俩个线程所共享,所以就出现了死锁的问题了。
0 0
- JAVA实现的一个简单的死锁(附解释)
- JAVA实现的一个简单的死锁(附解释)
- JAVA实现的一个简单的死锁(附解释)
- 一个简单的死锁
- java写一个死锁的简单例子
- Java一个简单的死锁程序
- 一个简单的Java死锁示例
- 一个简单的java死锁示例
- 【代码示例】 一个简单的Java死锁
- Java一个简单的死锁例子
- Java产生死锁的一个简单例子
- Java:一个简单的死锁示例
- Java产生死锁的一个简单例子
- Java:创造一个简单的死锁环境
- Java产生死锁的一个简单例子
- Java写一个简单的死锁程序
- Java产生死锁的一个简单例子
- java线程死锁的简单解释和解决办法
- Android M 新的运行时权限开发者需要知道的一切
- 164. Maximum Gap
- 设计模式 - MVC
- python之pexpect+pxssh模块的使用心得 (转)
- android 使用webView加载欢迎界面的个人实现思路,实现欢迎界面不断在改变
- JAVA实现的一个简单的死锁(附解释)
- 获取微信用户信息(3)(java开发)
- <span>标签挨着写时的出现的迷之间距问题
- JAVA之二重循环
- 【MCM-2017】2017年数学建模美赛题目原文及翻译-C (个人思路)
- 支付宝Unity
- 蒙特卡罗方法入门(阮一峰)
- 《计算机系统要素》学习笔记:第二章布尔运算
- spring security基础配置(一)