当前位置:首页 > 开发 > 编程语言 > Java > 正文

JAVA基础----java死锁的一个例子

发表于: 2014-02-19   作者:无量   来源:转载   浏览:
摘要: java的一个死锁的例子 package com.out.test; public class Test6 implements Runnable{ public static Object o1 = new Object(); public static Object o2 = new Object(); public static int
java的一个死锁的例子
package com.out.test;

public class Test6 implements Runnable{  
    public static Object o1 = new Object();  
    public static Object o2 = new Object();  
    public static int i = 1;  
    public int flag=1;  
      
    public void run() {  
        System.out.println(i++ + "线程启动。。。。");  
        if (flag == 1) {  
            synchronized(o1) {  
                try {  
                    Thread.sleep(3000);  
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                }
                
                synchronized (o2) {  
                    System.out.println(i + "线程结束");  
                }
            }  
        }    
          
        if (flag == 0) {  
            synchronized(o2) {  
                try {  
                    Thread.sleep(1000);  
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                }
                
                synchronized (o1) {  
                    System.out.println(i + "线程结束");  
                } 
            }  
        }  
    }  
      
    public static void main(String[] args) {  
        Test6 lock1 = new Test6();  
        Test6 lock2 = new Test6();  
        lock1.flag = 1;
        lock2.flag = 0;
        Thread thread1 = new Thread(lock1);  
        Thread thread2 = new Thread(lock2);  
          
        thread1.start();  
        thread2.start();  
    }  
}

JAVA基础----java死锁的一个例子

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
 死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于
今天在群里又有一个朋友问到了这样一个练习,我索性将代码贴到这里,下次需要的朋友可以来这里看。
freemarker-2.3.8.jar struts2-core-2.0.11.2.jar 我也是初学者,不知道有些地方对不对。乱写。呵呵
class Dead implements Runnable//实现接口 { private boolean flag; Dead(boolean flag) { this.fl
例子程序: import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorSe
一、进程和线程的概念和区别 进程是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分
前言 死锁单独写一篇文章是因为这是一个很严重的、必须要引起重视的问题。这不是夸大死锁的风险,尽
class Dead implements Runnable//实现接口 { private boolean flag; Dead(boolean flag) { this.fl
public static void main(String[] args) { final LeftRightDeadLock lock = new LeftRightDeadLock
在读Steve Yegg的blog上 Rhinos and Tigers的时候读到这么一页演示稿: 以前一直没这么试过,觉得很
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号