搜索
写经验 领红包

Wait概述是什么

wait英语中有等待的意思,在计算机领域它还是一种Java术语,C语言中也有wait命令。那么网友们知道Wait概述是什么吗?下面一起来了解一下吧。

Wait
Wait

1、public final voidwaitthrowsInterruptedException在其他线程调用此对象的notify方法或notifyAll方法前,导致当前线程等待。换句话说,此方法的行为就好像它仅执行wait调用一样。当前线程必须拥有此对象监视器。该线程发布对此监视器的所有权并等待,直到其他线程通过调用notify方法,或notifyAll方法通知在此对象的监视器上等待的线程醒来。然后该线程将等到重新获得对监视器的所有权后才能继续执行。对于某一个参数的版本,实现中断和虚假唤醒是可能的,而且此方法应始终在循环中使用:synchronized(obj){while(conditiondoesnothold)obj。wait;抛出:IllegalMonitorStateException-如果当前线程不是此对象监视器的所有者。InterruptedException-如果在当前线程等待通知之前或者正在等待通知时,任何线程中断了当前线程。在抛出此异常时,当前线程的中断状态被清除。

2、当前线程必须拥有此对象监听器。此方法导致当前线程(称之为T)将其自身放置在对象的等待集中,然后放弃此对象上的所有同步要求。出于线程调度目的,在发生以下四种情况之一前,线程T被禁用,且处于休眠状态:其他某个线程调用此对象的notify方法,并且线程T碰巧被任选为被唤醒的线程。

3、大约已经到达指定的实际时间。但是,如果timeout为零,则不考虑实际时间,在获得通知前该线程将一直等待。

4、然后,从对象的等待集中删除线程T,并重新进行线程调度。然后,该线程以常规方式与其他线程竞争,以获得在该对象上同步的权利;一旦获得对该对象的控制权,该对象上的所有其同步声明都将被恢复到以前的状态,这就是调用wait方法时的情况。然后,线程T从wait方法的调用中返回。所以,从wait方法返回时,该对象和线程T的同步状态与调用wait方法时的情况完全相同。在没有被通知、中断或超时的情况下,线程还可以唤醒一个所谓的虚假唤醒(spurious wakeup)。虽然这种情况在实践中很少发生,但是应用程序必须通过以下方式防止其发生,即对应该导致该线程被提醒的条件进行测试,如果不满足该条件,则继续等待。

以上就是对于Wait概述是什么的相关内容。