阻塞队列-消息队列

队列,先进先出~

阻塞

什么是阻塞?

1、这个队列是线程安全的(内部进行了加锁控制)。
2、当队列满的时候,往队列里插元素,就会阻塞,,直到队列不满才会进行插入操作。
当队列为空的时候,从队列里取出元素,此时也会阻塞。。一直阻塞到队列不为空的时候才完成取元素操作。
阻塞队列可以帮我们完成“生产者消费者模型”
生产消费者模型:规模稍微大一点的程序,势必会用到生产者消费者模型~~
(包饺子模型)一个人擀饺子皮(生产者),多个人包饺子(消费者)。
生产者将饺子皮放到一个地方,消费者去那个地方取饺子皮。
阻塞队列就是这样的一个地方。
使用阻塞队列,能够很好地协调生产者和消费者之间的工作节奏。

阻塞队列

这种阻塞队列在服务器开发中特别有用~
同一个服务器,同一时刻可能收到很多的请求,服务器的处理能力是有限的,如果同一时刻服务器收到的请求过多,可能就会导致服务器宕机。
所以,就可以使用生产者消费者模型来进行“削峰”操作,削弱请求峰值对服务器的冲击力。从而避免上述情况的发生。
在这里插入图片描述
将超出负载的多余的请求加入阻塞队列中, 等待服务器腾出资源时在逐次加入服务器中,此时的服务器,也可以理解成cpu,每次只放行一小部分的线程进入cup,类似于打疫苗排队的过程。

Java标准库中,已经提供了现成的阻塞队列blockingQueue,在java.util.concurrent包中:

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

/**
 * @Name: ThreadDemo4
 * @Description:        阻塞队列
 * @Author: panlai
 * @Date: 2021/8/10 11:45
 */

public class ThreadDemo4 {
   
    public static void main(String[] args) throws InterruptedException {
   
        // BlockingQueue本身是一个接口,不能直接实例化,就类似map
        BlockingQueue<String
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值