zoukankan      html  css  js  c++  java
  • ArrayBlockingQueue源码阅读

    由数组支持的有界阻塞队列。此队列对元素FIFO(先进先出)进行排序。队列的 开头是已在队列中停留最长时间的元素。队列的尾部是最短时间出现在队列中的元素。新元素插入到队列的尾部,并且队列检索操作在队列的开头获取元素。
    这是经典的“有界缓冲区”,其中固定大小的数组包含由生产者插入并由消费者提取的元素。创建后,容量将无法更改。尝试将put元素放入完整队列将导致操作阻塞;take从空队列中尝试元素的尝试也会类似地阻塞。
    此类支持可选的公平性策略,用于订购正在等待的生产者和使用者线程。默认情况下,不保证此排序。但是,使用公平性设置的队列true可以按FIFO顺序授予线程访问权限。公平通常会降低吞吐量,但会减少可变性并避免饥饿。
     
    构造方法中指定其长度,重载调用其他构造方法,默认创建重入锁,同时创建两个AbstractQueuedSynchronizer.ConditionObject

     

    add():调用了offer方法,返回false时抛异常

    offer():    offer方法中用到了重入锁,先判断长度,再调用enqueue方法再items数组执行添加操作

     

    clear():将items数组清空,takeIndex、putIndex重置为0,Itrs是一个内部类,用来存放迭代器,最后唤醒其他线程

     

     

     

  • 相关阅读:
    linux系统中完整删除逻辑卷、卷组、物理劵
    linux系统中逻辑卷缩容步骤
    问题
    新的一天开始了
    Solaris的版本命名
    Sun公司的操作系统:Solaris简介
    培训经历:Awakening the Dragon Within
    大本计算机专业该怎么学习?
    windbg 使用
    ubuntu 常用技巧
  • 原文地址:https://www.cnblogs.com/gqymy/p/12149913.html
Copyright © 2011-2022 走看看