📄 jlab0802.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;
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -