zoukankan      html  css  js  c++  java
  • 12,多线程-生产者消费者问题

    1,生产一个,消费多个(生产多个,消费一个):对notify()的线程没有判断:将if换成while

    2,全部等待:notify换成notifyAll

     package songyan;
    
     class Resource {
        private String name;
        private int count=1;
        boolean flag=false;
        public synchronized void set(String name)
        {
            while(this.flag)
                try{this.wait();}catch(Exception e){}
            this.flag=true;    
            this.name=name+"--"+count++;
            System.out.println(Thread.currentThread().getName()+"生产者"+this.name+"------");
            this.notifyAll();        
        }
        public synchronized void out()
        {
            while(!this.flag)
                try{this.wait();}catch(Exception e){}
            System.out.println(Thread.currentThread().getName()+"消费者"+this.name);
            this.flag=false;
            this.notifyAll();
            
        }
    
        
     }
     class Produce implements Runnable 
     {
         private Resource res;
         Produce(Resource res )
         {
             this.res=res;
         }
         public void run()
         {
             while(true)
             {
                 res.set("+商品+");
             }
         }
     }
     class consume implements Runnable
     {
         private Resource res;
         consume(Resource res )
         {
             this.res=res;
         }
         public void run()
         {
             while(true)
             {
                 res.out();
             }
         }
     }
     
     public class test{
         public static void main(String[] args) {
             Resource res = new Resource();
             Produce pro = new Produce(res) ;
             consume con = new consume(res);
             Thread t1= new Thread(pro);
             Thread t2= new Thread(con);
             Thread t3= new Thread(pro);
             Thread t4= new Thread(con);
             t1.start();
             t2.start();
             t3.start();
             t4.start();
                
                
         }
     }
  • 相关阅读:
    路由器远程登陆的方式
    路由器上的DNS服务器构建
    路由器配置维护技巧---管道的应用
    【转】常见面试问题
    英文面试决胜关键
    12个有趣的c语言面试题
    16道嵌入式C语言面试题(经典)
    LCD 调试总结
    关于uboot的一些优化
    linux驱动开发的经典书籍
  • 原文地址:https://www.cnblogs.com/exexex/p/8433039.html
Copyright © 2011-2022 走看看