zoukankan      html  css  js  c++  java
  • 多线程,死锁,DeadLock

    /*
    死锁。
    同步中嵌套同步。
    
    */
    
    class Ticket implements Runnable
    {
        private  int tick = 1000;
        Object obj = new Object();
        boolean flag = true;
        public  void run()
        {
            if(flag)
            {
                while(true)
                {
                    synchronized(obj)
                    {
                        show();
                    }
                }
            }
            else
                while(true)
                    show();
        }
        public synchronized void show()//this
        {
            synchronized(obj)
            {
                if(tick>0)
                {
                    try{Thread.sleep(10);}catch(Exception e){}
                    System.out.println(Thread.currentThread().getName()+"....code : "+ tick--);
                }
            }
        }
    }
    
    
    class  DeadLockDemo
    {
        public static void main(String[] args) 
        {
    
            Ticket t = new Ticket();
    
            Thread t1 = new Thread(t);
            Thread t2 = new Thread(t);
            t1.start();
            try{Thread.sleep(10);}catch(Exception e){}
            t.flag = false;
            t2.start();
    
    
        }
    }

     第二个例子:

    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
    {
        static Object locka = new Object();
        static Object lockb = new Object();
    }
    
    class  DeadLockTest
    {
        public static void main(String[] args) 
        {
            Thread t1 = new Thread(new Test(true));
            Thread t2 = new Thread(new Test(false));
            t1.start();
            t2.start();
        }
    }
  • 相关阅读:
    Android的数据存储
    Servlet第一天
    JavaScript高级程序设计读书笔记(3)
    Interesting Papers on Face Recognition
    Researchers Study Ear Biometrics
    IIS 发生意外错误 0x8ffe2740
    Father of fractal geometry, Benoit Mandelbrot has passed away
    Computer vision scientist David Mumford wins National Medal of Science
    Pattern Recognition Review Papers
    盒模型bug的解决方法
  • 原文地址:https://www.cnblogs.com/vaer/p/4369862.html
Copyright © 2011-2022 走看看