15.SynchronousQueue

  1. SynchronousQueue是这样一种阻塞队列,其中每个 put 必须等待一个 take,反之亦然。同步队列没有任何内部容量,甚至连一个队列的容量都没有。一种没有缓冲的队列,生产者生产数据直接或被消费者获取并消费。
  2. public class UseQueue {
  3.  
  4.    public static void main(String[] args) throws Exception {
  5.      
  6.      
  7.       final SynchronousQueue<String> q = new SynchronousQueue<String>();
  8.       q.add("asdasd");
  9.    }
  10. }
  11. 输出结果:
  12. Exception in thread "main" java.lang.IllegalStateException: Queue full
  13.    at java.util.AbstractQueue.add(AbstractQueue.java:98)
  14.    at com.bjsxt.base.coll013.UseQueue.main(UseQueue.java:19)
  15.  
  16.  
  17.  
  18. public class UseQueue {
  19.  
  20.    public static void main(String[] args) throws Exception {
  21.      
  22.      
  23.       final SynchronousQueue<String> q = new SynchronousQueue<String>();
  24.       Thread t1 = new Thread(new Runnable() {
  25.          @Override
  26.          public void run() {
  27.             try {
  28.                 System.out.println(q.take());
  29.             } catch (InterruptedException e) {
  30.                 e.printStackTrace();
  31.             }
  32.          }
  33.       });
  34.       t1.start();
  35.       Thread t2 = new Thread(new Runnable() {
  36.         
  37.          @Override
  38.          public void run() {
  39.             q.add("asdasd");
  40.          }
  41.       });
  42.       t2.start();    
  43.    }
  44.    }
  45. }
  46. 输出结果:
  47. asdasd
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值