Object.Wait 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
| 名称 | 说明 |
|---|---|
| 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 属性许可证中所述的术语使用。
另请参阅
- Notify()
- NotifyAll()
- Wait(Int64)
- <xref:Java.Lang.Object.Wait(System.Int64%2c+System.Int32)>
- Thread
适用于
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 属性许可证中所述的术语使用。
另请参阅
- Notify()
- NotifyAll()
- Wait()
- <xref:Java.Lang.Object.Wait(System.Int64%2c+System.Int32)>
- Thread
适用于
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 属性许可证中所述的术语使用。
另请参阅
- Notify()
- NotifyAll()
- Wait()
- <xref:Java.Lang.Object.Wait(System.Int64%2c+System.Int32)>
- Thread