java并发容器之 SynchronousQueue

SynchronousQueue 这个队列实现了 BlockingQueue接口

该队列的特点

1.容量为0,无论何时 size方法总是返回0

2. put操作阻塞,直到另外一个线程取走队列的元素。

3.take操作阻塞,直到另外的线程put某个元素到队列中。

4. 任何线程只能取得其他线程put进去的元素,而不会取到自己put进去的元素

 

 public static void main(String[] args) throws InterruptedException {
        final SynchronousQueue<Integer> queue = new SynchronousQueue<Integer>();

        new Thread() {
            @Override
            public void run() {
                try {
                    while (true) {
                        System.out.println("size1:" + queue.size());
                        System.out.println("element:" + queue.take());
                        System.out.println("size2:" + queue.size());

                    }
                } catch (InterruptedException e) {
                     
                    e.printStackTrace();
                }
            }
        }.start();

        queue.put(1);
        queue.put(2);
        queue.put(3);
    }

 该队列的一个应用在  ThreadPoolExecutor

你可能感兴趣的:(java并发)