简单的死锁

转载 2018年04月17日 10:58:24
package test1;
	/**
	* 一个简单的死锁类
	* @author iStar
	* 当类的对象flag=1时(T1),先锁定O1,睡眠500毫秒,然后锁定O2;
	* 而T1在睡眠的时候另一个flag=0的对象(T2)线程启动,先锁定O2,睡眠500毫秒,等待T1释放O1;
	* T1睡眠结束后需要锁定O2才能继续执行,而此时O2已被T2锁定;
	* T2睡眠结束后需要锁定O1才能继续执行,而此时O1已被T1锁定;
	* T1、T2相互等待,都需要对方锁定的资源才能继续执行,从而死锁。
	*/
	class DeadLock implements Runnable {
		public int flag = 1;
		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;
		new Thread(td1).start();
		new Thread(td2).start();

	}
	}
输出结果:
flag=1
flag=0

Android项目实战:简单天气

-
  • 1970年01月01日 08:00

一个简单死锁的例子

转自:http://www.open-open.com/code/view/1426489433101package com.spri.test; /**  * 在实际编程中,要尽量避免出...
  • maoyeqiu
  • maoyeqiu
  • 2016-08-09 20:11:36
  • 1469

最简单的多线程死锁案例代码(Java语言)

package com.thread.test;public class DeadLock { private static Object firstMonitor = new Object(...
  • Rongbo_J
  • Rongbo_J
  • 2015-11-05 18:08:27
  • 1741

Java一个简单的死锁例子

内容:一个简单的死锁例子,大概的思路:两个线程A和B,两把锁X和Y,现在A先拿到锁X,然后sleep()一段时间,我们知道sleep()是不会释放锁资源的。然后如果这段时间线程B拿到锁Y,也sleep...
  • u011345136
  • u011345136
  • 2015-05-16 20:07:53
  • 1914

一个简单的死锁程序

多线程之死锁
  • beautiful_face
  • beautiful_face
  • 2017-02-20 15:49:32
  • 783

多线程死锁的一个简单例子

package web1; import java.util.concurrent.atomic.AtomicInteger; public class Main1 {     public s...
  • JeamKing
  • JeamKing
  • 2017-06-11 17:13:14
  • 434

多线程编程(一)——写一个简单的死锁

(整个九月忙着找工作,好多收获,好多遗憾,最终结局还可以接受,技术路还很远,再接再厉!面去哪儿网时,写惯了算法的我突然让写了几个多线程编程,有点蒙蔽,最近好好整理一下) 死锁发生的原因: 1、系统资源...
  • zhangliangzi
  • zhangliangzi
  • 2016-10-03 19:11:50
  • 4282

Java写一个简单的死锁程序

public class DeadlockSample {     private final Object obj1 = new Object();     private final Obje...
  • zhengchao1991
  • zhengchao1991
  • 2017-08-06 21:36:02
  • 790

JAVA实现的一个简单的死锁(附解释)

[java] view plain copy public class DeadLockTest implements Runnable{    private int...
  • u012506234
  • u012506234
  • 2016-05-18 18:29:22
  • 375

一个简单的死锁示例

/** * 一个简单的死锁类 * @author iStar * 当类的对象flag=1时(T1),先锁定O1,睡眠500毫秒,然后锁定O2; * 而T1在睡眠的时候另一个flag=0的对象(...
  • baoendemao
  • baoendemao
  • 2014-05-15 10:38:42
  • 370
收藏助手
不良信息举报
您举报文章:简单的死锁
举报原因:
原因补充:

(最多只允许输入30个字)