生产者与消费者模式代码简单实现
主要涉及知识点为线程同步问题
店员类:
class Clerk{
private int productCount = 0;
public synchronized void produceProduct(){
if(productCount < 20){
productCount++;
System.out.println(Thread.currentThread().getName + ":"+productCount)
notify();
}else{
try{
wait();
}catch(InterrupedExceotion e){
e.printStackTrace();
}
}
}
public synchronized void consumeProduct(){
if(productCount > 0){
productCount--;
System.out.println(Thread.currentThread().getName + ":"+productCount)
notify();
} else{
try{
wait();
}catch(InterrupedExceotion e){
e.printStackTrace();
}
}
}
}
生产者类
class Producer extend Thread{
private Clerk clerk;
public Producer(Clerk clerk){
this.clerk = clerk;
}
piblic void run(){
while(true){
clerk.produceProduct();
}
}
}
消费者类
class Consumer extend Thread{
private Clerk clerk;
public Consumer(Clerk clerk){
this.clerk = clerk;
}
public void run(){
while(true){
clerk.consumeProduct();
}
}
}
测试类
public class ProductTest{
public static void main(String[] args){
Clerk clerk = new Clerk()
Producer p1 = new Producer(clerk)
p1.setName("生产者")
Consumer c1 = new Consumer(clerk)
c1.setName("消费者")
p1.start()
c1.start()
}
}