隋唐演义

隋唐演义

arrayblockingqueue是阻塞队列吗 阻塞队列使用blockingqueue

双十一 0

淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】

arrayblockingqueue使用场景,arrayblockingqueue使用,arrayblockingqueue底层是循环数组,arrayblockingqueue源码

阻塞队列是一种特殊的队列. 也遵守 "先进先出" 的原则.?

阻塞队列顾名思义就是带有阻塞特性的队列的,它是如何运行的呢?

答: 1.当队列为空时,尝试出队列,就会发生阻塞,直到队列不空为止。

? ? 2.当队列为满时,尝试入队列,就会发送阻塞,直到队列不满为止

阻塞队列在 多线程中非常有用,它可以调节生产者和消费者之间的关系,当生产者生产的资源太多,以至于消费者无法完全消费完,那么可以让生产者阻塞,达到生产、消费平衡的作用。

生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题

生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取。?

它将所有工作分工明确,参考下面这个例子:

有4个人我们一起包饺子,我们每个人都各顾各的,每个人都得做擀面皮和包饺子,如果这样的话,每个人的包饺子的效率都不是很高。若我们进行分工,1个人负责擀面皮,3个人负责包饺子,擀面皮的不管包饺子的是如何包,包饺子的不管擀面皮的是如何擀的。在第二种方式中擀面皮的就可以看作生产者,包饺子的就可以看作消费者。

看如下解读:开始时A服务器和B服务器通过阻塞对象进行交互,若B服务器挂了,那么我们可以迅速的做出反应,参考阻塞队列进行重新加载B服务器。还有就是若A服务器业务服务器,B服务器是实现业务的服务区,因为业务服务器需要时常更新代码,因此可以阻塞队列相当于一个缓存区。

?比如在 "秒杀" (购买物品)场景下, 服务器同一时刻可能会收到大量的支付请求. 如果直接处理这些支付请求,服务器可能扛不住(每个支付请求的处理都需要比较复杂的流程). 这个时候就可以把这些请求都放到一个阻塞队列中, 然后再由消费者线程慢慢的来处理每个支付请求.在这里就起到了削峰的效果。

“ 削峰填谷”我们可以联想到三峡大坝:

三峡可谓是“功在当代,利在千秋”,为何这样说?三峡大坝它可不仅仅只是发电用的,它还有其他的功能。当到达雨季时,三峡上游的水向下流的会比往常多,这时开始关闸蓄水,防止下游发生洪灾,这就是“削峰”,过了雨季,下游需要灌溉庄稼,但是下游水又少了,这时打开闸门进行放水,造福下游,这就是“填谷”。

在购物系统中,我们就可以将秒杀时突然猛增的用户请求比喻成雨季的雨水,我们通过阻塞队列进行蓄洪,当在平常时,没那么多的用户请求时,我们就是慢慢的解决用户的请求比喻成开闸放水。

?BlockingQueue的成员:

ArrayBlockingQueue:基于数组的阻塞队列实现

LinkedBlockingQueue:基于链表的阻塞队列

PriorityBlockingQueue:基于优先队列的阻塞队列

BlockingQueue:这个是实现阻塞队列的接口,继承与Queue

常用方法介绍:

注意:在这个些方法中,只有put()方法和take()方法带有阻塞特性,其他的方法不具备阻塞特性。?

import java.util.【【微信】】.BlockingDeque; import java.util.【【微信】】.BlockingQueue; import java.util.【【微信】】.LinkedBlockingDeque; public class testDemo1 {     public static 【【微信】】(String[] args) throws InterruptedException {         BlockingQueue<【【微信】】>  queue=【【微信】】ue<>();         //生产者         Thread producer=new Thread(()->{             int i=0;             while (true) {                 try {                     【【微信】】.out.println("生产:"+i);                     queue.put(i);                     i++;                     Thread.sleep(1000);                 } catch (InterruptedException e) {   
..互助群最新,互助群最新,互帮微信群二维码2023,加入2023 618天猫狂欢节微信小程序互助平台是什么,邀请助力不用在求人,有事就来群里互相帮助!不用在四处找人来助力了,从此无忧无虑逍遥自在!人多活跃!还有新人。关注加2023年天猫618 年中大促互助群最新。