生产者消费者例题
class Clerk{
private int productNum
= 0;
public synchronized void produceProduct() {
if (productNum
< 20){
productNum
++;
System
.out
.println(Thread
.currentThread().getName() + ":开始生产第"+ productNum
+"个产品");
notify();
}else{
try {
wait();
} catch (InterruptedException e
) {
e
.printStackTrace();
}
}
}
public synchronized void consumeProduct() {
if (productNum
> 0){
System
.out
.println(Thread
.currentThread().getName() +"开始消费第"+ productNum
+"个产品");
productNum
--;
notify();
}else{
try {
wait();
} catch (InterruptedException e
) {
e
.printStackTrace();
}
}
}
}
class Customer extends Thread{
private Clerk clerk
;
public Customer(Clerk clerk
) {
this.clerk
= clerk
;
}
@Override
public void run() {
while (true){
System
.out
.println(getName() + "开始消费...");
clerk
.consumeProduct();
}
}
}
class Productor extends Thread{
private Clerk clerk
;
public Productor(Clerk clerk
) {
this.clerk
= clerk
;
}
@Override
public void run() {
while (true) {
System
.out
.println(getName() + "开始生产...");
clerk
.produceProduct();
}
}
}
public class ProdectTest {
public static void main(String
[] args
) {
Clerk clerk
= new Clerk();
Customer c1
= new Customer(clerk
);
Productor p1
= new Productor(clerk
);
p1
.setName("生产者1");
c1
.setName("消费者1");
p1
.start();
c1
.start();
}
}
转载请注明原文地址:https://blackberry.8miu.com/read-43908.html