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();
                
                
         }
     }
  • 相关阅读:
    Hadoop2.0 HA集群搭建步骤
    了解何为DML、DDL、DCL
    搭建Hadoop平台(新手入门)
    周记1
    IT小小鸟
    Python中的函数修饰符
    python_类方法和静态方法
    Python的log模块日志写两遍的问题
    python——装饰器例子一个
    初识HIVE
  • 原文地址:https://www.cnblogs.com/exexex/p/8433039.html
Copyright © 2011-2022 走看看