【问题标题】:getState() return value for java.util.concurrent.locks.Conditionjava.util.concurrent.locks.Condition 的 getState() 返回值
【发布时间】:2014-02-21 18:35:30
【问题描述】:

AbstractQueuedSynchronizer 类是 java.util.concurrent.locks.Condition 接口的基类,有一个名为 getState()

的函数

protected final int getState()

返回同步状态的当前值。此操作具有 > 易失性读取的内存语义。

返回:

当前状态值

此函数返回 Condition 的当前状态,我假设它类似于等待、超时等待、中止、以 int 形式发出信号。有谁知道我在哪里可以找到 getState() 函数的整数定义?

【问题讨论】:

    标签: java multithreading conditional-statements


    【解决方案1】:

    “状态”值的含义取决于子类——来自JavaDocs

    此类旨在为大多数依赖单个原子 int 值来表示状态的同步器提供有用的基础。子类必须定义更改此状态的受保护方法,并定义该状态在获取或释放此对象方面的含义

    (我的粗体字)

    【讨论】:

      【解决方案2】:

      发现于com.google.common.util.concurrent.AbstractFuture.Sync

      /* Valid states. */
      static final int RUNNING = 0;
      static final int COMPLETING = 1;
      static final int COMPLETED = 2;
      static final int CANCELLED = 4;
      static final int INTERRUPTED = 8;
      

      虽然接口通常不描述实现细节,但这些值可能与其他实现中的不同事件相关联。

      【讨论】:

      • 这就是状态值对 AbstractQueuedSynchronizer 的特定子类 的含义——抽象类本身(根据设计)不会为状态字段分配任何语义。
      • 当然,这就是我想说的,这只是一种可能的实现方式。您的回答是正确的,发布前没有更新页面;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 2020-12-25
      • 2018-09-15
      • 2019-08-30
      • 1970-01-01
      • 2018-11-20
      • 1970-01-01
      相关资源
      最近更新 更多