admin管理员组

文章数量:1599408

文章目录

  • BlockingQueue原理
    • ArrayBlockingQueue源码分析
      • 问题引出:
  • Condition原理
    • Condition 的实现类
    • Condition监视器模型
    • Condition三部分
      • 等待队列
      • 等待操作
      • 通知操作

BlockingQueue原理

BlockingQueue是一个接口,它的实现类有ArrayBlockingQueue、DelayQueue、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue等。

它们的区别主要体现在存储结构上或对元素操作上的不同,但是对于put与take操作的原理是类似的。

下面以ArrayBlockingQueue源码为例,来说明BlockingQueue的实现原理

ArrayBlockingQueue源码分析

首先看一下ArrayBlockingQueue的构造函数,它初始化了put和take函数中用到的关键成员变量,这两个变量的类型分别是ReentrantLock和Condition:

  • ReentrantLock实例:是AbstractQueuedSynchronizer(AQS)的子类,用于实现锁同步机制
  • Condition实例:newCondition函数返回的Condition实例,是定义在AQS类内部的ConditionObject类,该类可以直接调用AQS相关的函数。在这用于实现等待队列机制

构造函数源码如下:

本文标签: 原理多线程JavaconditionBlockingQueue