SynchronousQueue package src.main.java.com.qqjx.thread; /* * @Auther wangpeng * @Date 2021/2/1 */ import java.util.concurrent.BlockingQueue; import java.util.concurrent.SynchronousQueue; //线程间交换数据 public class T08_SynchronusQueue { //容量为0 public static void main(String[] args) throws InterruptedException { BlockingQueue<String> strs = new SynchronousQueue<>(); new Thread(()->{ try { System.out.println(strs.take()); } catch (InterruptedException e) { e.printStackTrace(); } }).start(); strs.put("aaa"); //阻塞等待消费者消费 //strs.put("bbb"); //strs.add("aaa"); System.out.println(strs.size()); } } aaa 0 Exception in thread "main" java.lang.IllegalStateException: Queue full at java.util.AbstractQueue.add(AbstractQueue.java:98) at src.main.java.com.qqjx.thread.T08_SynchronusQueue.main(T08_SynchronusQueue.java:26)