多线程--阻塞队列

阻塞队列一共有四种方式的队列,他们分别是:

1.ArrayBlookingQueue 

ArrayBlookingQueue 是一个有边界的阻塞队列,他的内部实现是一个数组,有边界的意思是他的容量是有限的.我们必须在其初始化的时候指定他的容量大小,容量大小一旦指定就不可以改变

ArrayBlookingQueue 是以先进先出的范式存储数据,最新插入的对象是尾部,最新移除的对象是头部.

例子:

<String> arrays =new ArrayBlookingQueue<string>(3);

    arrays.add("李四");
    arrays.add("张军");
    arrays.add("张军");
    arrays.offer("张三",1,TimeUnit.SECONDS);
· LinkedBIockingQueue 

2.LinkedBlockingQueue

LinkedBlockingQueue阻塞队列大小的配置是可选的,如果我们初始化是指定一个大小,他就是有边界的.如果不指定,他就是无边界的,说是无边界,其实是采用了默认大小为Interger,MAX VALUE 的容量,它内部不实现是一个链表.

LinkedBlockingQueue也是先进先出的方式存储数据

例子:

LinkedBlockingQueue linkedBlockingQueue =new LinkedBlockingQueue(3);
linkedBlockingQueue.add("张丹");
linkedBlockingQueue.add("李四");
linkedBlockingQueue.add("李四");
System.out.printIn(linkedBlockingQueue.size());

3.PriorityBlockingQueue

PriorityBlockingQueue是一个没有边界的队列.他的排序规则和java.util.prioptyQueue一样,需要注意,PriorityBlockingQueue中允许插入null对象

所有插入PriorityBlockingQueue的对象必须实现java.lang.Comparable 接口,队列优先级的排序规则就是按照我们对这个接口的实现来定义的.

另外,我们可以从PriorityBlockingQueue活的一个迭代器Itertor,但这个迭代器并不保证按照优先级顺序进行迭代.

4.SynchronousQueue

SynchronousQueue队列内部仅允许容纳一个元素,当一个线程插入一个元素后会被阻塞,除非这个元素被另一个线程消费.

 

当下次运行只有stop或手动为死亡,否则将会返回就绪.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值