package study.java.thread.BlockingQueue;
import java.util.concurrent.SynchronousQueue;
public class TestSynchronousQueue {
public static void main(String[] args) throws InterruptedException {
final SynchronousQueue<Integer> queue = new SynchronousQueue<Integer>();
// 往queue放进去一个element以后就一直wait直到有其他thread进来把这个element取走
/* queue.take();// 取出并且remove掉queue里的element,取不到东西他会一直等
queue.peek();// 永远返回null
*/
new Thread(new Runnable() {
@Override
public void run() {
try {
queue.put(11);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
Thread.sleep(1000);
new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println(queue.peek());
System.out.println(queue.take());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}