Java代码模拟死锁 多线程
来源:互联网 发布:淘宝延时喷剂是真的吗 编辑:程序博客网 时间:2024/05/22 17:34
题目描述
Java代码模拟死锁
死锁条件
- 互斥使用:一个资源只能分配给一个线程
- 不可剥夺:资源只能由占有者释放,申请者不能强制剥夺
- 请求保持:线程申请资源时,保持对原有资源的占有
- 循环等待:存在一个进程等待队列:{P1 , P2 , … , Pn}, 其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路
代码
public class DeadLock implements Runnable { // flag=1,占有对象o1,等待对象o2 // flag=0,占有对象o2,等待对象o1 public int flag = 1; // 定义两个Object对象,模拟两个线程占有的资源 public static Object o1 = new Object(); public static Object o2 = new Object(); public static void main(String[] args) { DeadLock deadLock1 = new DeadLock(); DeadLock deadLock2 = new DeadLock(); deadLock1.flag = 0; deadLock2.flag = 1; Thread thread1 = new Thread(deadLock1); Thread thread2 = new Thread(deadLock2); thread1.start(); thread2.start(); } public void run() { System.out.println("flag: " + flag); if (flag == 1) { synchronized (o1) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (o2) { System.out.println("1"); } } } else if (flag == 0) { synchronized (o2) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (o1) { System.out.println("0"); } } } }}
1 0
- Java代码模拟死锁 多线程
- Java 模拟多线程死锁
- java多线程之模拟死锁
- java多线程 模拟死锁程序
- Java多线程死锁情况模拟
- 【重点】模拟多线程死锁
- 多线程死锁的模拟
- java多线程学习之死锁的模拟和避免
- 【Java多线程】多线程死锁
- 多线程死锁代码实例
- 多线程死锁代码
- 一个模拟死锁的多线程
- java多线程-java死锁
- java模拟线程死锁
- java 线程死锁模拟
- java模拟死锁事故现场
- 模拟死锁 java
- 关于Java中多线程死锁的代码示例
- 冒泡排序
- 【LeetCode从零单刷】Majority Element
- JS动态改变select选择变更option的index值
- android 中ListView中的adapter详解
- Hibernate浅谈
- Java代码模拟死锁 多线程
- Jsoup学习之Document类
- 【树的直径】bzoj 1509 逃学的小孩
- eclipse中maven自动下载最新的snapshot版本的jar包的问题
- 阻塞与非阻塞
- 关于领域驱动设计(DDD)仓储的思考
- 其它
- iOS程序猿如何快速掌握 PHP,化身"全栈攻城狮"?
- js函数语句和表达式定义函数记录