zoukankan      html  css  js  c++  java
  • Java 死锁

    /*
    死锁:常见情景之一:同步的嵌套。
    */
    
    class Test implements Runnable
    {
        private boolean flag;
        Test(boolean flag)
        {
            this.flag = flag;
        }
    
        public void run()
        {
            if(flag)
            {
                while(true)
                    synchronized(MyLock.locka)
                    {
                        System.out.println(Thread.currentThread().getName()+"..if   locka....");
                        synchronized(MyLock.lockb)                {
                            
                            System.out.println(Thread.currentThread().getName()+"..if   lockb....");
                        }
                    }
            }
            else
            {
                while(true)            
                    synchronized(MyLock.lockb)
                    {
                        System.out.println(Thread.currentThread().getName()+"..else  lockb....");
                        synchronized(MyLock.locka)
                        {
                            System.out.println(Thread.currentThread().getName()+"..else   locka....");
                        }
                    }
            }
        }
    }
    
    class MyLock
    {
        public static final Object locka = new Object();
        public static final Object lockb = new Object();
    }
    
    class SynFunctionLockDemo 
    {
        public static void main(String[] args) 
        {
            Test a = new Test(true);
            Test b = new Test(false);
    
            Thread t1 = new Thread(a);
            Thread t2 = new Thread(b);
            t1.start();
            t2.start();
        }
    }
    Output:
    Thread-0..if   locka....
    Thread-1..else  lockb....
  • 相关阅读:
    spark 中划分stage的思路
    如何带人
    技术管理
    学会谈判
    绩效评估与绩效反馈
    企业文化如何落地
    绩效沟通的best原则
    Area POJ
    Cows POJ
    Grandpa's Estate POJ
  • 原文地址:https://www.cnblogs.com/xiarongjin/p/8309024.html
Copyright © 2011-2022 走看看