生产者和消费者模式

来源:互联网 发布:南通千丰科技网络 编辑:程序博客网 时间:2024/06/14 20:56


生产者:

class Producer implements Runnable {    protected BlockingQueue<Object> queue;    Producer(BlockingQueue<Object> theQueue) {        this.queue = theQueue;    }    public void run() {        try {            while (true) {                Object justProduced = getResource();                queue.put(justProduced);                System.out.println("Produced resource - Queue size now = "                        + queue.size());            }        } catch (InterruptedException ex) {            System.out.println("Producer INTERRUPTED");        }    }    Object getResource() {        try {            Thread.sleep(100); // simulate time passing during read        } catch (InterruptedException ex) {            System.out.println("Producer Read INTERRUPTED");        }        return new Object();    }}

消费者:

class Consumer implements Runnable {    protected BlockingQueue<Object> queue;    Consumer(BlockingQueue<Object> theQueue) {        this.queue = theQueue;    }    public void run() {        try {            while (true) {                Object obj = queue.take();                System.out.println("Consumed resource - Queue size now = "                        + queue.size());                take(obj);            }        } catch (InterruptedException ex) {            System.out.println("CONSUMER INTERRUPTED");        }    }    void take(Object obj) {        try {            Thread.sleep(100); // simulate time passing        } catch (InterruptedException ex) {            System.out.println("Consumer Read INTERRUPTED");        }        System.out.println("Consuming object " + obj);    }}