设计一个生产电脑和搬运电脑类,要求生产出一条电脑就搬走一台,如果没有新的电脑生产出来,则搬运工要等待新的电脑产出,如果生产的电脑没有搬走,则要等待电脑搬走后在生产,并统计电脑生产的数量;
class Computer{
private String name;
private static int sum=1;
boolean falg =true;
public Computer(String name) {
super();
this.name = name;
}
public synchronized void set(){
if(!falg){
try{
super.wait();
}catch(InterruptedException e){
e.printStackTrace();}
}try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();}
System.out.println("当前生产了 "+this.name+" 已经生产了 "+sum+" 台电脑!");
sum++;
falg=false;
super.notify();
}
public synchronized void get(){
if(falg){
try{
super.wait();
}catch(InterruptedException e){
e.printStackTrace();}
}try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();}
System.out.println("搬走了 "+this.name);
falg=true;
super.notify();
}
}
class com implements Runnable{
public void run(){
for(int i=1;i<10;i++){
Computer c=new Computer("电脑 "+i);
c.set();
c.get();
}
}
}
public class test {
public static void main(String[] args) {
com t=new com();
new Thread(t).start();
}
}
输出结果:
当前生产了 电脑 1 已经生产了 1 台电脑!
搬走了 电脑 1
当前生产了 电脑 2 已经生产了 2 台电脑!
搬走了 电脑 2
当前生产了 电脑 3 已经生产了 3 台电脑!
搬走了 电脑 3
当前生产了 电脑 4 已经生产了 4 台电脑!
搬走了 电脑 4
当前生产了 电脑 5 已经生产了 5 台电脑!
搬走了 电脑 5
当前生产了 电脑 6 已经生产了 6 台电脑!
搬走了 电脑 6
当前生产了 电脑 7 已经生产了 7 台电脑!
搬走了 电脑 7
当前生产了 电脑 8 已经生产了 8 台电脑!
搬走了 电脑 8
当前生产了 电脑 9 已经生产了 9 台电脑!
搬走了 电脑 9