并发队列

1. 概述

① 为什么要使用队列

用队列可以在线程之间传递数据:生产者消费者模型,银行转账等地方
假如队列是线程安全的,那么我们就不用考虑了,只需从中取或者添加使用就行了;那也就是说考虑锁等线程安全问题的重任从使用者转移到了队列上

② 并发队列

在这里插入图片描述

③ 阻塞队列

阻塞队列是具有阻塞功能的队列,所以他首先是一个队列,其次是具有阻塞功能

通常,阻塞的队列的一端是给生产者放数据用的,另一端是给消费者拿数据用的;阻塞队列是线程安全的,所以生产者和消费者都可以是多线程的
在这里插入图片描述

take()//获取并移除队列的头节点,队列中没有数据则阻塞
put()//插入数据,但是如果队列已满,则阻塞

add()//如果满了会抛出异常
remove()//如果空了会抛出移除
element()//返回头,如果没有抛出异常

offer()//满了返回false
poll()//空了返回null
peek()//空了返回null

阻塞队列是线程池的重要组成部分

2. ArrayBlockingQueue

  • 有界,可以指定容量
  • 可以指定公平还是不公平
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(3,true);

3. LinkedBlockingQueue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值