zoukankan      html  css  js  c++  java
  • 死锁:同步中嵌套同步,但锁不同,示例二:

    class DeadLockDemo
    {
        public static void main(String[] args)
        {
            Ticket ticket = new Ticket();
            for(int i = 1;i<10;i++)
            {
                new Thread(ticket,"thread--00"+ i +"--").start();
                try
                {
                    Thread.sleep(10);
                }
                catch(Exception e)
                {
                    System.out.println(e.getMessage());
                }
                ticket.flag = !ticket.flag;
            }
        }
    }

    class Ticket implements Runnable
    {
        private int num = 10000;
        Object object = new Object();
        boolean flag = true;
        
        public void run()
        {
            if(flag)
            {
                while(true)
                {
                    synchronized(object)
                    {
                        sale();
                    }
                }
            }
            else
            {
                while(true)
                {
                    sale();
                }
            }        
        }
        
        public synchronized void sale()
        {
            synchronized(object)
            {
                if(num>0)
                {
                    try
                    {
                        Thread.sleep(10);
                    }
                    catch(Exception e)
                    {
                        
                    }
                    
                    System.out.println(Thread.currentThread().getName()+" .. sale .. "+num--);
                }
            }
        }
    }
  • 相关阅读:
    Windows下利用TortoiseSVN搭建本地SVN服务器
    我的Netty笔记
    Netty简单的HTTP服务器
    开启和关闭HBase的thrift进程
    java中重载和重写的区别
    java中形参个数可变的方法使用
    java中方法的参数传递机制
    Java内存分配全面浅析
    java中的类修饰符、成员变量修饰符、方法修饰符。
    js实现页面重定向
  • 原文地址:https://www.cnblogs.com/cxmsky/p/2860380.html
Copyright © 2011-2022 走看看