



















import java.util.Vector;class Test {private Vector<String> mCache = new Vector<String>();static class Consumer implements Runnable {
private Test mTestRef;
Consumer(Test t) {
mTestRef = t;
}public void run() {
try {
for (; ;) {
synchronized (mTestRef) {
if (mTestRef.mCache.size() > 0) {
String item = mTestRef.mCache.get(0);
mTestRef.mCache.remove(0);
System.out.println("Consume the item: " + item);
} else {
mTestRef.wait();
}
}
}
}
catch (InterruptedException ex) {
}
}
}static class Producer implements Runnable {
private Test mTestRef;
private String mProducerId;
Producer(String id, Test t) {
mProducerId = id;
mTestRef = t;
}public void run() {
try {
int i = 0;
while ((++i)<5) {
synchronized (mTestRef) {
String item = mProducerId + " #" + i;
mTestRef.mCache.add(item);
mTestRef.notify();
}
Thread.sleep(1000);
}
}
catch (InterruptedException ex) {
}
}
}public static void main(String[] args) {
Test test = new Test();
Thread consumer = new Thread(new Consumer(test));
Thread producer1 = new Thread(new Producer("p1", test));
Thread producer2 = new Thread(new Producer("p2", test));
producer1.start();
producer2.start();
consumer.start();
producer1.join();
producer2.join();
consumer.join();
}
output is:
Consume the item: p1 #1
Consume the item: p2 #1
Consume the item: p1 #2
Consume the item: p2 #2
Consume the item: p1 #3
Consume the item: p2 #3
Consume the item: p1 #4
Consume the item: p2 #4
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。