生活科普馆

位置:首页 > 科普 > 

Wait什么意思

科普2.64W

wait英语中有等待的意思 等待; 等; 等候; (尤指长期地)希望,盼望,期待; 准备妥; 在手边; 可得到; 可使用; 推迟;等候; 等待的时间;,在计算机领域它还是一种Java术语,C语言中也有wait命令。

Wait什么意思

public final voidwait() throwsInterruptedException在其他线程调用此对象的notify()方法或notifyAll()方法前,导致当前线程等待。换句话说,此方法的行为就好像它仅执行 wait(0)调用一样。 当前线程必须拥有此对象监视器。该线程发布对此监视器的所有权并等待,直到其他线程通过调用 notify方法,或 notifyAll方法通知在此对象的监视器上等待的线程醒来。然后该线程将等到重新获得对监视器的所有权后才能继续执行。 对于某一个参数的版本,实现中断和虚假唤醒是可能的,而且此方法应始终在循环中使用: synchronized (obj) { while (<condition does not hold>) (); ..抛出:IllegalMonitorStateException- 如果当前线程不是此对象监视器的所有者。InterruptedException- 如果在当前线程等待通知之前或者正在等待通知时,任何线程中断了当前线程。在抛出此异常时,当前线程的中断状态被清除。当前线程必须拥有此对象监听器。 此方法导致当前线程(称之为 T)将其自身放置在对象的等待集中,然后放弃此对象上的所有同步要求。出于线程调度目的,在发生以下四种情况之一前,线程 T被禁用,且处于休眠状态: 其他某个线程调用此对象的 notify方法,并且线程 T碰巧被任选为被唤醒的线程。

Wait什么意思 第2张

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

标签:Wait