zoukankan      html  css  js  c++  java
  • 线程池中的工作队列

    1.接口BlockingQueue 双缓冲队列,内部使用两条队列,允许两个线程同时向队列做操作,一个存储,一个取出。 在保证并发安全的同时,提高了队列的存取效率。 该队列继承于Queue,所以遵循先进先出原则(FIFO)

    队列提供几种基本的操作:

    >添加元素(队尾)

    >移除元素(队头)

    >取出队头元素(不移除)

    该接口的实现类;

    1) ArrayBlockingQueue :采用数组实现,规定大小的BlockingQueue,其构造必须指定大小。所含的对象是FIFO顺序排序的。

    2) LinkedBlockingQueue:采用双链表实现,大小不规定,若在构造时指定大小,生成的BlockingQueue有大小限制,不指定大小,其大小由Integer.MAX_VALUE来决定。oxffffff

    所含对象时FIFO顺序排序的

    3)PriorityBlockingQueue:类似于LinkedBlockingQueue,但是所含对象的排序不是FIFO,而是依据对象的自然话排序或者构造函数的Comparator来决定的。

    4)SynchronousQueue:特殊的BlockingQueue,有删除操作和插入操作,必须是先插入再删除。包含两个线程,插入线程和移除线程,这个容器相当于通道 不保留元素,在多任务队列中,处理速度最快。

  • 相关阅读:
    每天一个设计模式(2):观察者模式
    每天一个设计模式(1):策略模式
    每天一个设计模式(0):设计模式概述
    常量池、栈、堆的比较
    常量池小结
    Java虚拟机体系结构分析
    Java并发(3):volatile及Java内存模型
    第一题:Big Countries
    22 高级SQL特性
    21 使用游标
  • 原文地址:https://www.cnblogs.com/jamers-rz/p/13599268.html
Copyright © 2011-2022 走看看