美文网首页
Condition接口详解

Condition接口详解

作者: zhanglbjames | 来源:发表于2017-05-28 16:34 被阅读0次

Condition是对象监视器的替代品,拓展了监视器的语义

区别与联系

  • 联系
  1. 都有一组类似的方法:

对象监视器: Object.wait()、Object.wait(long timeout)、Object.notify()、Object.notifyAll()。
Condition对象: Condition.await()、Condition.awaitNanos(long nanosTimeout)、Condition.signal()、Condition.signalAll()。

  1. 都需要和锁进行关联:

对象监视器: 需要进入synchronized语句块(进入对象监视器)才能调用对象监视器的方法。
Condition对象:需要和一个Lock绑定。

  • 区别
  1. Condition拓展的语义方法:

awaitUninterruptibly():等待时忽略中断
awaitUntil(Date deadline) throws InterruptedException:等待到特定日期

  1. 使用方法:

**对象监视器: **进入synchronized语句块(进入对象监视器)后调用Object.wait()。
**Condition对象: **需要和一个Lock绑定,并显示的调用lock()获取锁,然后调用 Condition.await()。

  1. 等待队列数量:

**对象监视器: **1个。
**Condition对象: **多个。通过多次调用lock.newCondition()返回多个等待队列。

Condition接口

  1. 声明
  1. 等待方法
不管是发生中断还是超时都将继续竞争锁,而不是立即返回,只有再次获取锁时才能从等待方法返回(这一点和Object等待方法语义是一致的),根据中断状态抛出异常,
  1. 通知方法

AQS内部公共类ConditionObject对Condition接口的实现

AQS的ConditionObject源码详解

Condition接口使用示例

官方文档里举了一个和ArrayBlockingQueue的功能相似的有界塞队列例子,接下来分析一下

  1. 定义



    定义了两个Condition对象,notFull非满等待对象,notEmpty非空等待对象。

  2. put 方法


  3. take方法


相关文章

  • AQS的ConditionObject源码详解

    Condition接口见Condition接口详解 ConditionObject定义 定义为AQS的public...

  • Condition接口详解

    Condition是对象监视器的替代品,拓展了监视器的语义 区别与联系 联系 都有一组类似的方法:对象监视器: O...

  • spring learn

    Spring注解 1、Condition接口 2、ImportBeanDefinitionRegistrar 接口...

  • condition接口

    condition接口 任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主...

  • Condition接口

    任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括wait()、wa...

  • Spring boot条件自动装配

    接口Condition 实现接口Condition,可以指定在满足什么条件的情况下进行自动装配: 下面演示如何使用...

  • AbstractQueuedSynchronizer源码分析第二

    1 Condition接口 2 AbstractQueuedSynchronizer.ConditionObjec...

  • 09Condition

    Condition是与重入锁相关联的,通过Lock接口的Condition newCondition()方法生成一...

  • 浅析Condition接口

    任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括wait()、wa...

  • Condition

    生产者消费者实例: Condition是Object的wait/notify的替代,更灵活;Condition接口...

网友评论

      本文标题:Condition接口详解

      本文链接:https://www.haomeiwen.com/subject/qorhfxtx.html