import java.util.concurrent.BlockingQueue;
public class T1 extends Thread {
private BlockingQueue<Integer>q;
public T1(BlockingQueue<Integer>q){
this.q = q;
}
@Override
public void run() {
try {
q.add(1);
Thread.sleep(1000);
q.add(2);
Thread.sleep(2000);
q.add(3);
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.util.concurrent.BlockingQueue;
public class T2 extends Thread {
private BlockingQueue<Integer>q;
public T2(BlockingQueue<Integer> q) {
this.q = q;
}
@Override
public void run() {
try {
System.out.println(q.take());
System.out.println(q.take());
System.out.println(q.take());
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
public class Test0610 {
public static void main(String[] args) {
BlockingQueue<Integer> q = new ArrayBlockingQueue<Integer>(1);
T1 t1 = new T1(q);
T2 t2 = new T2(q);
t1.start();
t2.start();
}
}
參考:http://15jb.net/java-%E4%B8%AD-%E9%98%BB%E5%A1%9E%E9%9A%8A%E5%88%97blockingqueue%E8%A9%B3%E8%A7%A3%E5%8F%8A%E5%AF%A6%E4%BE%8B