SynchronousQueue 同步队列
SynchronousQueue 同步队列
-
没有容量,
进去一个元素,必须等待取出来之后,才能再往里面放一个元素!
put、take -
public class Test01 { /** * 同步队列 * 和其他的BlockingQueue 不一样, SynchronousQueue 不存储元素 * put了一个元素,必须从里面先take取出来,否则不能在put进去值! */ public static void main(String[] args) throws InterruptedException { SynchronousQueue<String> synchronousQueue = new SynchronousQueue<>(); new Thread(() -> { try { System.out.println(Thread.currentThread().getName() + "put 1"); synchronousQueue.put("1"); System.out.println(Thread.currentThread().getName() + "put 2"); synchronousQueue.put("2"); System.out.println(Thread.currentThread().getName() + "put 3"); synchronousQueue.put("3"); } catch (Exception e) { e.printStackTrace(); } }, "小明").start(); new Thread(() -> { try { TimeUnit.SECONDS.sleep(3); System.out.println(Thread.currentThread().getName() + "take" + synchronousQueue.take()); TimeUnit.SECONDS.sleep(3); System.out.println(Thread.currentThread().getName() + "take" + synchronousQueue.take()); TimeUnit.SECONDS.sleep(3); System.out.println(Thread.currentThread().getName() + "take" + synchronousQueue.take()); } catch (Exception e) { e.printStackTrace(); } }, "小红").start(); } }

浙公网安备 33010602011771号