java 死锁

原创 2015年11月19日 16:30:22

package test;
class DeadLock implements Runnable {

public boolean flag = true;

static Object o1 = new Object(), o2 = new Object();

@Override
public void run() {

    System.out.println(Thread.currentThread());
    System.out.println("flag = " + flag);

    if(flag) {
        System.out.println("&&&&&&&&&&&&&&&&&");
        synchronized(o1) {

            try 
            {
                System.out.println("sleep1");
                Thread.sleep(500);
            } 
            catch (Exception e)
            {
                e.printStackTrace();
            }

            System.out.println("-----下面的没有执行到------");

            //下面的没有执行到
            synchronized(o2) {
                System.out.println("1");
            }

            System.out.println("<<<<<<<<<<<<<");
        }
    }
    else {
        System.out.println("^^^^^^^^^^^^^^^^^^^^^");
        synchronized(o2) 
        {

            try {
                System.out.println("sleep2");
                Thread.sleep(500);
            } 
            catch (Exception e) {
                e.printStackTrace();
            }

            System.out.println("+++++下面的没有执行到++++++");

// 下面的没有执行到
synchronized(o1) {
System.out.println(“0”);
}
System.out.println(“>>>>>>>>>>>>”);
}
}
}

public static void main(String[] args) {
    DeadLock td1 = new DeadLock();
    DeadLock td2 = new DeadLock();

    td1.flag = true;
    td2.flag = false;

    new Thread(td1).start();
    new Thread(td2).start();
}

}

运行的结果是线程一直处于运行状态,但是被同步的两个代码块的
代码都没有执行.

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

public class DeadLockTest implements Runnable{ private int flag; static Object o1 = new Object(), ...
  • zll793027848
  • zll793027848
  • 2013年03月13日 21:29
  • 10168

Java并发编程系列之十二:死锁、饥饿和活锁

死锁发生在一个线程需要获取多个资源的时候,这时由于两个线程互相等待对方的资源而被阻塞,死锁是最常见的活跃性问题。这里先分析死锁的情形:假设当前情况是线程A已经获取资源R1,线程B已经获取资源R2,之后...
  • u011116672
  • u011116672
  • 2016年04月03日 18:28
  • 2843

Java死锁与如何避免死锁

所谓死锁就是进程循环等待它方占有的资源而无限制的僵持下去的局面。 以一个简单的例子来解释:一个桥,最多可以通过一个车子,但是左右两边都来了车子,而且都上了桥,左边的车子,占用了左边的桥资源,...
  • daguairen
  • daguairen
  • 2016年10月18日 15:59
  • 1951

不死锁的哲学家问题实现 java

  • 2014年01月21日 15:13
  • 1.83MB
  • 下载

java死锁问题

  • 2014年11月06日 22:20
  • 5KB
  • 下载

java 门锁终于被打开了(解决死锁)

  • 2010年06月21日 15:50
  • 59KB
  • 下载

一个java线程池死锁的例子

  • 2016年05月30日 16:53
  • 2KB
  • 下载

Java线程的同步与死锁

  • 2014年09月14日 14:56
  • 168KB
  • 下载

JAVA死锁and生产者消费者问题

  • 2012年06月02日 07:27
  • 1KB
  • 下载

Java 死锁示例性源代码

  • 2010年01月26日 15:19
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 死锁
举报原因:
原因补充:

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