zoukankan      html  css  js  c++  java
  • java基础---设计一个死锁

     
    /**
    * 一个简单的死锁类
    * 当DeadLock类的对象flag==1时(td1),先锁定o1,睡眠500毫秒
    * 而td1在睡眠的时候另一个flag==0的对象(td2)线程启动,先锁定o2,睡眠500毫秒
    * td1睡眠结束后需要锁定o2才能继续执行,而此时o2已被td2锁定;
    * td2睡眠结束后需要锁定o1才能继续执行,而此时o1已被td1锁定;
    * td1、td2相互等待,都需要得到对方锁定的资源才能继续执行,从而死锁。
    */ 
    public class DeadLock implements Runnable { 
        public int flag = 1; 
        //静态对象是类的所有对象共享的 
        private 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; 
            //td1,td2都处于可执行状态,但JVM线程调度先执行哪个线程是不确定的。 
            //td2的run()可能在td1的run()之前运行 
            new Thread(td1).start(); 
            new Thread(td2).start(); 
       
        } 
    }
  • 相关阅读:
    04.Javascript——入门一些方法记录之iterable
    03.Javascript——入门一些方法记录之Map和Set
    02.Javascript——入门一些方法记录之Object
    unity 工具开发基础
    lua热重载
    unity接入安卓sdk (unity调用安卓工程)
    转 Unity企业级支持案例与分析
    ugui的优化
    c#各个版本的特性
    最好用的lua编辑器--------emmylua使用汇总
  • 原文地址:https://www.cnblogs.com/buptyuhanwen/p/9546580.html
Copyright © 2011-2022 走看看