Java基础----一个死锁问题
2014-12-30 14:37
239 查看
package cn.itcast_02; public class MyLock { // 创建两把锁对象 public static final Object objA = new Object(); public static final Object objB = new Object(); }
package cn.itcast_02; public class DieLock extends Thread { private boolean flag; public DieLock(boolean flag) { this.flag = flag; } @Override public void run() { if (flag) { synchronized (MyLock.objA) { System.out.println("if objA"); synchronized (MyLock.objB) { System.out.println("if objB"); } } } else { synchronized (MyLock.objB) { System.out.println("else objB"); synchronized (MyLock.objA) { System.out.println("else objA"); } } } } }
package cn.itcast_02; /* * 同步的弊端: * A:效率低 * B:容易产生死锁 * * 死锁: * 两个或两个以上的线程在争夺资源的过程中,发生的一种相互等待的现象。 * * 举例: * 中国人,美国人吃饭案例。 * 正常情况: * 中国人:筷子两支 * 美国人:刀和叉 * 现在: * 中国人:筷子1支,刀一把 * 美国人:筷子1支,叉一把 */ public class DieLockDemo { public static void main(String[] args) { DieLock dl1 = new DieLock(true); DieLock dl2 = new DieLock(false); dl1.start(); dl2.start(); } }
相关文章推荐
- java基础知识回顾之java Thread类学习(七)--java多线程安全问题(死锁)
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
- 黑马程序员:Java基础——多线程的死锁问题
- Java基础 String类的一个小问题
- java基础25 线程的常用方法、线程安全问题、死锁现象
- Java基础-一个java文件多个类的问题
- java基础问题---java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用
- JAVA基础 day11 多线程 同步代码块 死锁问题
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
- java语言基础(93)——多线程中的死锁问题
- Java基础问题---计算一个整数的百位上的数,源代码
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
- Java基础 Arrays.atList需要注意的一个问题
- 求助: Java基础问题求助: 如何求三个数字中只有一个相同??????
- java基础问题----java中有几种方法可以实现一个线
- 一个让98%的Java程序员犯难的偏门问题!
- 一个让98%的Java程序员犯难的偏门问题!
- 一个让98%的Java程序员犯难的偏门问题!
- 一个让98%的Java程序员犯难的偏门问题!
- 一个让98%的Java程序员犯难的偏门问题!