【java】阻塞队列与非阻塞队列

本文介绍了Java并发编程中的阻塞队列和非阻塞队列,重点讨论了ConcurrentLinkedQueue作为无锁的高性能队列,以及 BlockingQueue 接口所代表的阻塞队列特性。阻塞队列在队列为空或满时会进行等待,而ConcurrentLinkedQueue在高并发下表现出色,不支持阻塞操作。
摘要由CSDN通过智能技术生成

在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列非阻塞,一个是以BlockingQueue接口为代表的阻塞队列.
在这里插入图片描述

非阻塞队列

队列里面没有数据时,操作队列出现异常或返回null,不具有等待/阻塞的特色

ConcurrentLinkedQueue : 是一个适用于高并发场景下的队列,通过无锁的方式,实现了高并发状态下的高性能,通常ConcurrentLinkedQueue性能好于BlockingQueue.它是一个基于链接节点的无界线程安全队列。该队列的元素遵循先进先出的原则。头是最先加入的,尾是最近加入的,该队列不允许有null元素

阻塞队列

阻塞队列一般附加两种操作:

  1. 在队列为空时,获取元素的线程会等待队列变为非空。
  2. 当队列满时,存储元素的线程会等待队列可用。

例子:

    public static void main(String[] args) throws InterruptedException {
        BlockingQueue<String> blockingQueue=new ArrayBlockingQueue<>(3);
        blockingQueue.offer("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值