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();
                
                
         }
     }
  • 相关阅读:
    用C语言编写生成小学四则运算程序
    每周学习报告
    读现代软件工程有感和自我介绍
    第七天
    第五天
    第六天
    作业九:课程总结
    作业四:结对编程项目--四则运算
    psp记录个人项目花费时间
    作业三:代码规范,代码复查
  • 原文地址:https://www.cnblogs.com/exexex/p/8433039.html
Copyright © 2011-2022 走看看