private List<String> queue = new ArrayList<String>();
public synchronized String getMessage() throws InterruptedException { while (queue.isEmpty()) { wait(); } String message = queue.remove(0); notify(); return message; }
public synchronized void putMessage(String message) throws InterruptedException { if (!queue.isEmpty()) { wait(); } queue.add(message); notify(); }
public static void main(String[] args) { MessageQueue queue = new MessageQueue(); new Thread(new MessageProducer("生产者1", queue)).start(); new Thread(new MessageProducer("生产者2", queue)).start(); new Thread(new MessageConsumer("消费者1", queue)).start(); new Thread(new MessageConsumer("消费者2", queue)).start(); new Thread(new MessageConsumer("消费者3", queue)).start(); new Thread(new MessageConsumer("消费者4", queue)).start(); new Thread(new MessageConsumer("消费者5", queue)).start(); new Thread(new MessageConsumer("消费者6", queue)).start(); } }
public class MessageProducer implements Runnable {