多线程死锁例子
2017-05-17 18:01
344 查看
package nyx; public class Nyx implements Runnable{ private int flag; private Object key1; private Object key2; public Nyx(int flag, Object key1, Object key2) { super(); this.flag = flag; this.key1 = key1; this.key2 = key2; } public static void main(String[] args){ System.out.println("测试开始!"); Object key1 = new Object(); Object key2 = new Object(); Nyx t1 = new Nyx(1, key1, key2); Nyx t2 = new Nyx(2, key1, key2); Thread thread1 = new Thread(t1); Thread thread2 = new Thread(t2); thread1.start(); thread2.start(); System.out.println("测试结束!"); } public void t1(){ synchronized(key1){ System.out.println("锁住了key1。。"); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized(key2){ System.out.println("获取了key2。。"); } } } public void t2(){ synchronized(key2){ System.out.println("锁住了key2。。"); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized(key1){ System.out.println("获取了key1。。"); } } } @Override public void run() { if(flag == 1){ t1(); }else{ t2(); } } }
两个线程,相互等待对方持有资源,只有获取对方的资源才能完成线程任务。。死锁发生以后,两个线程均处于锁定状态。。
典型问题: 哲学家问题
相关文章推荐
- 多线程造成死锁的例子
- 多线程四,死锁产生的原因和死锁的例子(毕向东老师)
- java多线程死锁例子
- 【Java多线程】之七:死锁例子
- java多线程发生死锁的一个例子
- Java多线程死锁的例子
- 多线程——死锁的例子
- java学习--多线程发生死锁的一个例子
- 多线程死锁的一个简单例子
- Java多线程探究-死锁例子
- 多线程死锁例子
- 浅谈 Java 多线程环境下 如何跟踪死锁 (例子)
- 一个多线程的死锁和锁争用的例子
- Linux多线程的一个小例子
- boost库中thread多线程详解6——线程组简单例子
- 多线程的上手例子
- web开发中的多线程死锁问题,避免死锁
- java 多线程(1) 多线程死锁与同步超时的实现
- java面试题---请用多线程写死锁
- 死锁的例子