Object.Wait 方法

定义

重载

名称 说明
Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

[Android.Runtime.Register("wait", "()V", "")]
public void Wait();
[<Android.Runtime.Register("wait", "()V", "")>]
member this.Wait : unit -> unit
属性

例外

如果调用此方法的线程不是此对象的监视器的所有者,

如果当前线程已中断, 在引发异常之前,将清除当前线程的中断状态。

注解

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

在所有方面,此方法的行为就像已调用一样 wait(0L, 0) 。 有关详细信息,请参阅方法的 #wait(long, int) 规范。

适用于 . 的 java.lang.Object.wait()Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

另请参阅

适用于

Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

[Android.Runtime.Register("wait", "(JI)V", "")]
public void Wait(long timeoutMillis, int nanos);
[<Android.Runtime.Register("wait", "(JI)V", "")>]
member this.Wait : int64 * int -> unit

参数

timeoutMillis
Int64

等待的最长时间(以毫秒为单位)

nanos
Int32

其他时间(以纳秒为单位)范围(含 0-9999999)

属性

例外

如果 millis 为 , nanos 则为 nanos > 999999。。

如果调用此方法的线程不是此对象的监视器的所有者,

如果当前线程已中断, 在引发异常之前,将清除当前线程的中断状态。

注解

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

当前线程必须拥有此对象的监视器锁。 #notify notify有关线程可以成为监视器锁所有者的方式的说明,请参阅该方法。

此方法使当前线程(此处 <称为 var>T</var>)将自身置于此对象的等待集中,然后放弃此对象上的任何和所有同步声明。 请注意,只放弃此对象的锁;线程等待时,当前线程可能同步的任何其他对象将保持锁定状态。

<线程 var>T</var> 随后会出于线程计划目的被禁用,并处于休眠状态,直到发生以下情况之一:<ul><li>其他线程调用notify此对象<的方法,线程 var>T</var> 恰好被任意选择为要唤醒的线程。 <li>其他一些线程调用 notifyAll 此对象的方法。 <li>其他线程 Thread#interrupt() 中断线程 <var>T</var>。 <li>指定的实时量已过,或多或少。 表达式提供 1000000 * timeoutMillis + nanos实时量(以纳秒为单位)。 nanos如果timeoutMillis同时为零,则不会考虑实时,线程会等待,直到其他原因之一唤醒。 <li>Thread <var>T</var> 被虚假唤醒。 (请参阅下文。 </ul>

然后,将从此对象的等待集中删除线程 <var>T</var> ,并重新启用线程计划。 它与其他线程一起竞争,以便有权在对象上同步;一旦该对象重新获得对对象的控制权,该对象上的所有同步声明将还原到现状-即调用该方法时的情况 wait 。 然后,线程 <var>T</var> 从方法的 wait 调用返回。 因此,从 wait 方法返回时,对象的同步状态和线程 T 的同步状态与调用方法时 wait 完全相同。

线程可以唤醒,而不会收到通知、中断或超时,所谓的<虚构唤醒</em>>。 虽然这种情况在实际中很少发生,但应用程序必须通过测试导致线程被唤醒的条件来防范它,并在条件不满足的情况下继续等待。 请参阅以下示例。

有关本主题的详细信息,请参阅 Brian Goetz 和其他人<的 em> 中的第 14.2 节“条件队列”Java练习</em> 中的并发(2006 年 Addison-Wesley) 或 Joshua Bloch <的 em>Effective Java, Second Edition</em> (Addison-Wesley, 2008) 中的 Item 69)。

如果当前线程是 java.lang.Thread#interrupt()被任何线程在等待之前或等待时中断的,则会引发一个 InterruptedException 。 引发 <此异常时,将清除当前线程的 em>中断状态</em> 。 除非此对象的锁定状态已还原,否则不会引发此异常,如上所述。

适用于 . 的 java.lang.Object.wait(long, int)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

另请参阅

适用于

Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

[Android.Runtime.Register("wait", "(J)V", "")]
public void Wait(long timeoutMillis);
[<Android.Runtime.Register("wait", "(J)V", "")>]
member this.Wait : int64 -> unit

参数

timeoutMillis
Int64

等待的最长时间(以毫秒为单位)

属性

例外

如果 millis

如果调用此方法的线程不是此对象的监视器的所有者,

如果当前线程已中断, 在引发异常之前,将清除当前线程的中断状态。

注解

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

在所有方面,此方法的行为就像已调用一样 wait(timeoutMillis, 0) 。 有关详细信息,请参阅方法的 #wait(long, int) 规范。

适用于 . 的 java.lang.Object.wait(long)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

另请参阅

适用于