zoukankan      html  css  js  c++  java
  • BlockingQueue 阻塞队列

    BlockingQueue阻塞队列

    A Queue that additionally supports operations that wait for the queue to become non-empty when retrieving an element, and wait for space to become available in the queue when storing an element.

    就是一种队列但是又在插入和取数据的时候支持了额外的等待阻塞。

    关于无界队列和有界队列

    队列的底层结构无非就是Array,或者是LinkedList。一般来说Array基本都是有界的,因为定义Array是有大小的,但是Array有的情况下会扩容。所以大小固定的Array是有界的。同理LinkedList也是只要初始化定义了一个大小,基本都可以认为是有界,当然如果大小是Integer.MaxValue这种数量级,也可以认为是无界【毕竟实际很难达到这种边界】。

    ArrayBlockingQueue

    一种基于数组的有界阻塞队列。支持FIFO,默认不是公平队列

    LinkedBlockingQueue

    官方的介绍叫An optionally-bounded blocking queue based on linked nodes.

    就是说有无边界是可以选的。

    PriorityBlockingQueue

    官方介绍An unbounded blocking queue that uses the same ordering rules as class PriorityQueue and supplies blocking retrieval operations

    这个队列是base on Array的无界队列,因为它会自动扩容。因为是Priority,所以是优先级高的先出队。

    DelayQueue

    DelayQueue 也是一个优先队列,不过它的优先级是和expire关联的,而且这个队列是基于数组的无界队列。而且进入队列的element必须是实现Delayed接口的。

    SynchronousQueue

    最难理解的就就是SynchronousQueue ,这个队列没有容量,所以每次入队必须匹配一次出队操作,否则就会阻塞;反之出队操作也必须匹配一个入队操作,否则也会阻塞。该队列使用CAS保证并发,在有的线程池类型中就使用了这种特殊的阻塞队列。

    Tag

    queue BlockingQueue

  • 相关阅读:
    Spring 签名加密+xml数据交互
    Spring 使用 RestTemplate 模拟 电商网站+支付平台
    SSM 框架搭建
    SpringMVC 登录验证实例
    四.Mybatis 动态sql语句
    三.Mybatis 多对一与一对多
    二.Mybatis 增删改查
    一.Mybatis 入门
    SSH框架搭建
    二)Spring AOP编程思想与动态代理
  • 原文地址:https://www.cnblogs.com/dreamtaker/p/14703636.html
Copyright © 2011-2022 走看看