日期:2014-05-20 浏览次数:20741 次
import java.util.ArrayList; import java.util.List; import java.util.Random; public class Queue { List<Integer> Integers = new ArrayList<Integer>(); int maxSize = 4; int count = 0; public Queue() { } public synchronized void add(Integer e) { if (Integers.size() == maxSize) { try { this.wait(); } catch (InterruptedException e1) { e1.printStackTrace(); } } this.notifyAll(); if (Integers.size() < maxSize) { System.out.println(Thread.currentThread().getName() + " " + e); Integers.add(e); count++; } } public synchronized void remove() { if (Integers.size() == 0) { try { this.wait(); } catch (InterruptedException e1) { e1.printStackTrace(); } } this.notifyAll(); if (Integers.size() > 0) { System.out.println(Thread.currentThread().getName() + " " + this.Integers.get(0)); Integers.remove(0); } } public static void main(String args[]) { Queue q = new Queue(); Create c = new Create(q); PullOut po = new PullOut(q); new Thread(c).start(); new Thread(po).start(); } } class Create implements Runnable { String name = "生产者"; private Queue q; public Create(Queue q) { this.q = q; } @Override public void run() { int count = 0; Random r = new Random(); while (count < 10) { int number = r.nextInt() % 20; q.add(number); try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } count++; } } } class PullOut implements Runnable { String name = "消费者"; private Queue q; public PullOut(Queue q) { this.q = q; } @Override public void run() { int count = 0; while (count < 10) { q.remove(); try { Thread.sleep(800); } catch (InterruptedException e) { e.printStackTrace(); } count++; } } }