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是一个内部类,用来存放迭代器,最后唤醒其他线程

     

     

     

  • 相关阅读:
    计算机图形方面职业计划体会
    Shader Wave
    Cook-Torrance光照模型
    Unity3D 固定功能函数
    Hermite (埃尔米特)曲线
    技能CD 效果 shader
    圆角计算 Shader
    抽象工厂模式
    单例模式
    unity 菜单栏添加新菜单
  • 原文地址:https://www.cnblogs.com/gqymy/p/12149913.html
Copyright © 2011-2022 走看看