java命名空间java.util.concurrent.locks接口condition的类成员方法:
awaituninterruptibly定义及介绍
本文导语:
awaituninterruptibly
void awaituninterruptibly()
造成当前线程在接到信号之前一直处于等待状态。
与此条件相关的锁以原子方式释放,并且出于线程调度的目的,将禁用当前线程,且在发生以下三种情况之一 以前,当前线程将一直处...
awaituninterruptibly
void awaituninterruptibly()
- 造成当前线程在接到信号之前一直处于等待状态。
与此条件相关的锁以原子方式释放,并且出于线程调度的目的,将禁用当前线程,且在发生以下三种情况之一 以前,当前线程将一直处于休眠状态:
- 其他某个线程调用此
condition
的 signal()
方法,并且碰巧将当前线程选为被唤醒的线程;或者
- 其他某个线程调用此
condition
的 signalall()
方法;或者
- 发生“虚假唤醒”
在所有情况下,在此方法可以返回当前线程之前,都必须重新获取与此条件有关的锁。在线程返回时,可以保证 它保持此锁。
如果在进入此方法时设置了当前线程的中断状态,或者在等待时,线程被中断,那么在接到信号之前,它将继续等待。当最终从此方法返回时,仍然将设置其中断状态。
实现注意事项
假定调用此方法时,当前线程保持了与此 condition
有关联的锁。这取决于确定是否为这种情况以及不是时,如何对此作出响应的实现。通常,将抛出一个异常(比如 illegalmonitorstateexception
)并且该实现必须对此进行记录。