⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jlab0803.java

📁 计算机系学习java的专用ppt
💻 JAVA
字号:
 class ProduceInteger extends Thread{
         private HoldInteger sharedObject;
         public ProduceInteger(HoldInteger shared){
                   super("ProduceInteger");
                   sharedObject=shared;
         }

         public void run(){
                 for(int count=1;count<=10;count++){
                      try{
                             Thread.sleep((int)(Math.random()*3000));
                         }catch(InterruptedException exception){
                              System.err.println(exception.toString());
                         }
                         sharedObject.setSharedInt(count);
                 }   
                 System.err.println(getName()+"finished producing values"+
                                    "\nTerminating"+getName());
         }
}
    
 class ConsumeInteger extends Thread{
                     private HoldInteger sharedObject;
                     public ConsumeInteger(HoldInteger shared){
                              super("ConsumeInteger");
                              sharedObject=shared;
                     }
                     public void run(){
                          int value,sum=0;
                      do{
                      try{
                             Thread.sleep((int)(Math.random()*3000));
                         }catch(InterruptedException exception){
                              System.err.println(exception.toString());
                         }
                         value=sharedObject.getSharedInt();
                         sum+=value;
                      }while(value!=10);
                      System.err.println(getName()+"retrieved values totaling"+
                                  sum+"\nTerminating"+getName());
                      }
        }
 
 
 class HoldInteger{
                 private int sharedInt;
                 private boolean avail=false;
                 public synchronized void setSharedInt(int value){
                  while(avail==true){
                         try{
                               wait();
                         }catch(InterruptedException exception){
                              System.err.println(exception.toString());
                          }
                     } 
                   System.err.println(Thread.currentThread().getName()+
                                             "setting sharedInt to"+value);
                   sharedInt=value;
                   avail=true;
                   notifyAll();

                 }
                public synchronized int getSharedInt(){
                      while(avail==false){
                         try{
                                 wait();
                            }catch(InterruptedException exception){
                              System.err.println(exception.toString());
                          }
                     } 
                         
                     avail=false;
                    System.err.println(Thread.currentThread().getName()+
                                            "retrieving sharedInt value"+sharedInt);
                  notifyAll();
                return sharedInt;



                }
       



}
            
            

public class JLab0803{
               public static void main(String args[]){
                        HoldInteger sharedObject=new HoldInteger();
                         ProduceInteger producer=new ProduceInteger(sharedObject);
                         ConsumeInteger consumer=new ConsumeInteger(sharedObject);
                            producer.start();
                             consumer.start();
               }
         
      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -