jlab0802.java

来自「java教程中的编程实例」· Java 代码 · 共 66 行

JAVA
66
字号
     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;
                public void setSharedInt(int value){
                      System.err.println(Thread.currentThread().getName()+
                                  "setting sharedInt to "+value);
                      sharedInt=value;
                    }
                public int getSharedInt(){
                      System.err.println(Thread.currentThread().getName()+
                                   "retrieving sharedInt value "+sharedInt);
                       return sharedInt;
                            }
                    }

           public class JLab0802{
              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 + =
减小字号Ctrl + -
显示快捷键?