一个生产这消费者问题

来源:互联网 发布:萤石云软件下载 编辑:程序博客网 时间:2024/05/21 13:52

固定大小的缓存容器, 有一个生产者和三个消费者:


import java.util.LinkedList;
class Customer implements Runnable{Buffer buffer;public Customer(Buffer b){buffer = b;}@Overridepublic void run() {while(true){int tmp = buffer.get();System.out.println(this.toString() + ": custom " + tmp);}}}class Producter implements Runnable{Buffer buffer;int count = 0;public Producter(Buffer b){buffer = b;}@Overridepublic void run() {while(true){System.out.println(this.toString()+": product "+count);buffer.put(count++);try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}public class Buffer{LinkedList<Integer> buffer = new LinkedList<Integer>();int size;public Buffer(int s){size = s;}public synchronized void put(int i) {while(buffer.size()==size){try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}size++;buffer.add(i);notifyAll();}public synchronized int get(){while(buffer.size()==0){try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}size--;int tmp = buffer.removeFirst();notifyAll();return tmp;}public static void main(String [] args){Buffer buffer = new Buffer(10);Thread producter = new Thread(new Producter(buffer));producter.start();for(int i=0; i<3; i++){Thread customer = new Thread(new Customer(buffer));customer.start();}}}


0 0
原创粉丝点击