鸿蒙OS ConditionHelper
ConditionHelper
java.lang.Object
|---ohos.utils.ConditionHelper
public class ConditionHelper
extends Object
一个帮助类,用于使用 java.util.concurrent.locks 包中内置的 Condition 类,而不处理 Lock 和 java.lang.InterruptedException 异常。
ConditionHelper 对象提供用于挂起线程(使其等待)或唤醒等待线程的接口。 它支持无限等待或定时等待。 线程在被唤醒或经过指定的等待时间后才会退出等待状态。
使用 ConditionHelper 类时要注意以下几点:
- 如果线程被唤醒后不重置唤醒状态,下次调用ConditionHelper#await或ConditionHelper#await(long awaitMs)方法时会立即返回执行结果。
- ConditionHelper#await(long awaitMs) 方法不能确保精确计时。
- 如果在等待期间发生 java.lang.InterruptedException 异常,等待状态不会终止。 线程被唤醒或等待时间过去后,可以使用 Thread.currentThread().isInterrupted() 来检查线程是否被中断。
构造函数摘要
构造函数 | 描述 |
---|---|
ConditionHelper() | 用于创建具有默认唤醒状态 false 的 ConditionHelper 实例的构造函数。 |
ConditionHelper(boolean isWakeup) | 用于创建具有指定唤醒状态的 ConditionHelper 实例的构造函数。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
void | await() | 挂起当前线程,直到它被唤醒。 |
boolean | await(long awaitMs) | 暂停当前线程,直到它被唤醒或等待时间过去。 |
void | resetCondition() | 将唤醒状态重置为 false,然后您可以调用 await()。 |
void | wakeup() | 唤醒当前对象的线程并将其唤醒状态设置为 true。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造函数详细信息
ConditionHelper
public ConditionHelper()
用于创建具有默认唤醒状态 false 的 ConditionHelper 实例的构造函数。
ConditionHelper
public ConditionHelper(boolean isWakeup)
用于创建具有指定唤醒状态的 ConditionHelper 实例的构造函数。
参数:
参数名称 | 参数描述 |
---|---|
isWakeup | 指示要设置的唤醒状态。 true表示线程被唤醒,false表示线程未被唤醒。 |
方法详情
wakeup
public void wakeup()
唤醒当前对象的线程并将其唤醒状态设置为 true。
如果没有调用resetCondition()重置唤醒状态,下次调用await()或await(long awaitMs)方法时会立即返回执行结果。
resetCondition
public void resetCondition()
将唤醒状态重置为 false,然后您可以调用 await()。
await
public void await()
挂起当前线程,直到它被唤醒。
如果对象的唤醒状态为 true,则立即返回该方法的执行结果。
如果发生 java.lang.InterruptedException 异常,当前线程继续等待,直到被唤醒。 唤醒后,可以使用 Thread.currentThread().isInterrupted() 来检查线程是否被中断。
await
public boolean await(long awaitMs)
暂停当前线程,直到它被唤醒或等待时间过去。
如果对象的唤醒状态为 true,则立即返回该方法的执行结果。
如果发生 java.lang.InterruptedException 异常,当前线程继续等待。 线程被唤醒或等待时间过去后,可以使用 Thread.currentThread().isInterrupted() 来检查线程是否被中断。
请注意,此方法无法确保精确的时序,因为它使用系统时钟。 如果系统时钟发生变化,可能会影响时序精度。
参数:
参数名称 | 参数描述 |
---|---|
awaitMs | 表示等待时间,以毫秒为单位。 如果此参数设置为 0,则线程保持等待。 |
返回:
如果线程等待被唤醒,则返回 true; 如果线程一直等到等待时间过去,则返回 false。