/*设计一个生产电脑和搬运电脑类,要求每生产出一台电脑就搬走一台电脑。
*没有生产出新的电脑,则搬运工要等待新电脑产出;
*如果生产出的电脑没有搬走,则要等待电脑搬走之后再生产,并统计出生产的电脑数量。
*/
package Java多线程_01;
class Resource_01{
private Computer computer;
public synchronized void make() throws Exception{
if(this.computer != null) {
super.wait();
}
Thread.sleep(100);
this.computer = new Computer("惠普v1000", 11000);
System.out.println("【生产电脑】" + this.computer);
super.notifyAll();
}
public synchronized void get() throws Exception{
if(this.computer == null) {
super.wait();
}
Thread.sleep(10);
System.out.println("【取走电脑】"+this.computer);
this.computer = null;
super.notifyAll();
}
}
class Computer{
private static int count = 0;
private String name;
private double price;
public Computer(String name, double price) {
this.name = name;
this.price = price;
count++;
}
public String toString() {
return "【第"+count+"台电脑】"+"电脑品牌:"+this.name+"、价值:"+this.price;
}
}
class Producer_01 implements Runnable{
private Resource_01 resource;
public Producer_01(Resource_01 resource) {
this.resource = resource;
}
public void run() {
for(int x=0;x<50;x++) {
try {
this.resource.make();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
class Consumer_01 implements Runnable{
private Resource_01 resource;
public Consumer_01(Resource_01 resource) {
this.resource = resource;
}
public void run() {
for(int x=0;x<50;x++) {
try {
this.resource.get();
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
public class homework_02 {
public static void main(String[] args) {
Resource_01 resource = new Resource_01();
new Thread(new Producer_01(resource)).start();
new Thread(new Consumer_01(resource)).start();
}
}