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

📄 jlab0803.java

📁 java教程中的编程实例
💻 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 "+
                                       "\nTherminating"+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=-1;
                      boolean a=false;
                public synchronized void setSharedInt(int value){
                         while(a==true){
                            try{
                               wait();
                                }catch(InterruptedException e){}
                         }
                       a=true;
                       notifyAll();
                      System.err.println(Thread.currentThread().getName()+
                                  "setting sharedInt to "+value);
                      sharedInt=value;
                    }
                public synchronized int getSharedInt(){
                      while(a==false){
                           try{
                               wait();
                               }catch(InterruptedException e){ }
                                }
                            a=false;
                        notifyAll();
                      System.err.println(Thread.currentThread().getName()+
                                   "retrieving sharedInt value "+sharedInt);
                       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 + -