您的位置:首页 > 编程语言 > Java开发

生产者消费者模式Java实现

2016-09-16 16:04 246 查看
//storage类用来生产和消费
import java.util.LinkedList;

public class Storage {

private final int MAX_SIZE=100;
private LinkedList<Object> list=new LinkedList<Object>();
public void produce(int num){
synchronized (list) {
while(list.size()+num>MAX_SIZE){
try {
list.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int i=0;i<num;i++){
list.add(new Object());
}
list.notifyAll();
}
}

public void consume(int num){
synchronized (list) {
while(list.size()<num){
try {
list.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
for(int i=0;i<num;i++){
list.remove();
}
}
list.notifyAll();
}
}

}
//Producer类
public class Producer extends Thread {

private int num;
private Storage storage;

public Producer(Storage storage,int num) {
this.num = num;
this.storage = storage;
}

@Override
public void run() {
storage.produce(num);
}

}
//Consumer类
public class Consumer extends Thread{

private int num;
private Storage storage;

public Consumer(Storage storage,int num) {
this.num = num;
this.storage = storage;
}

@Override
public void run() {
storage.consume(num);
}

}
//测试类Main
public class Main {

public static void main(String[] args) {
Storage storage=new Storage();

Producer producer = new Producer(storage,8);
Producer producer2 = new Producer(storage,5);
Producer producer3 = new Producer(storage,3);
Consumer consumer = new Consumer(storage,10);

producer.start();
consumer.start();
producer2.start();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: