Object.Wait 메서드

정의

오버로드

Wait()

현재 스레드가 깨어날 때까지 대기하게 합니다( 일반적으로 <알림을 받><거나 <>중단/>em>)합니다<.

Wait(Int64, Int32)

현재 스레드가 깨어날 때까지 대기하게 합니다. 일반적으로 <>알림을 받<거나 <중단</>내보내>>거나 일정량의 실시간이 경과할 때까지 대기합니다.

Wait(Int64)

현재 스레드가 깨어날 때까지 대기하게 합니다. 일반적으로 <>알림을 받<거나 <중단</>내보내>>거나 일정량의 실시간이 경과할 때까지 대기합니다.

Wait()

현재 스레드가 깨어날 때까지 대기하게 합니다( 일반적으로 <알림을 받><거나 <>중단/>em>)합니다<.

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

예외

이 메서드를 호출하는 스레드가 이 개체 모니터의 소유자가 아니면 입니다.

현재 스레드가 중단되었으면 입니다. 예외가 throw되기 전에 현재 스레드의 중단된 상태 지워집니다.

설명

현재 스레드가 깨어날 때까지 대기하게 합니다( 일반적으로 <알림을 받><거나 <>중단/>em>)합니다<.

모든 면에서 이 메서드는 호출된 것처럼 wait(0L, 0) 동작합니다. 자세한 내용은 메서드 사양을 #wait(long, int) 참조하세요.

에 대한 Java 설명서입니다 java.lang.Object.wait().

이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.

추가 정보

적용 대상

Wait(Int64, Int32)

현재 스레드가 깨어날 때까지 대기하게 합니다. 일반적으로 <>알림을 받<거나 <중단</>내보내>>거나 일정량의 실시간이 경과할 때까지 대기합니다.

[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 포함

특성

예외

, 또는 nanos > 999999nanos millis 입니다.

이 메서드를 호출하는 스레드가 이 개체 모니터의 소유자가 아니면 입니다.

현재 스레드가 중단되었으면 입니다. 예외가 throw되기 전에 현재 스레드의 중단된 상태 지워집니다.

설명

현재 스레드가 깨어날 때까지 대기하게 합니다. 일반적으로 <>알림을 받<거나 <중단</>내보내>>거나 일정량의 실시간이 경과할 때까지 대기합니다.

현재 스레드는 이 개체의 모니터 잠금을 소유해야 합니다. 스레드가 #notify notify 모니터 잠금의 소유자가 될 수 있는 방법에 대한 설명은 메서드를 참조하세요.

이 메서드는 현재 스레드(여기서 <var>T</var>라고 함)가 이 개체에 대한 대기 집합에 자신을 배치한 다음 이 개체에 대한 모든 동기화 클레임을 포기하게 합니다. 이 개체의 잠금만 포기됩니다. 스레드가 대기하는 동안 현재 스레드가 동기화될 수 있는 다른 개체는 잠긴 상태로 유지됩니다.

그런 다음 스레드 var T/var>은 스레드 예약을 위해 사용하지 않도록 설정되고 다음 중 하나가 발생할 때까지 휴면 상태가 됩니다. <ul<>li>일부 다른 스레드는 이 개체에 대한 메서드를 호출 notify 하고 스레드 <var>T</var>은 각성할 스레드로 임의로 선택됩니다.<>< <li>다른 스레드는 이 개체에 notifyAll 대한 메서드를 호출합니다. <li>다른 스레드 Thread#인터럽트()는 스레드 <var>T</var>을 인터럽트합니다. <li>지정된 실시간 양이 다소 경과했습니다. 실시간 크기(나노초)는 식 1000000 * timeoutMillis + nanos에 의해 지정됩니다. 및 nanos 가 모두 0인 경우 timeoutMillis 실시간은 고려되지 않으며 스레드는 다른 원인 중 하나에 의해 깨어날 때까지 기다립니다. <li>Thread <var>T</var> 은 가짜로 깨어났습니다. (아래 참조) </Ul>

그런 다음 스레드 <var>T</var> 이 이 개체에 대한 대기 집합에서 제거되고 스레드 예약에 대해 다시 사용하도록 설정됩니다. 개체에서 동기화할 수 있는 권한을 다른 스레드와 일반적인 방식으로 경쟁합니다. 개체를 다시 제어하면 개체의 모든 동기화 클레임이 상태 quo ante로 복원됩니다. 즉, 메서드가 wait 호출된 시점의 상황으로 복원됩니다. 그런 다음 스레드 var T/var>은 메서드 호출에서 를 반환합니다wait.<>< 따라서 메서드에서 반환할 wait 때 개체 및 스레드 T 의 동기화 상태는 메서드가 호출되었을 때 wait 와 정확히 같습니다.

스레드는 소위 가짜 절전< 모드 해제/em>이라는 <>알림, 중단 또는 시간 초과 없이 절전 모드를 해제할 수 있습니다. 실제로는 거의 발생하지 않지만 애플리케이션은 스레드를 깨워야 하는 조건을 테스트하고 조건이 충족되지 않을 경우 계속 대기하여 이를 보호해야 합니다. 아래 예제를 참조하세요.

이 항목에 대한 자세한 내용은 섹션 14.2, "조건 큐", Brian Goetz 및 기타의 <em>Java Concurrency in Practice</em> (Addison-Wesley, 2006) 또는 Item 69 in Joshua Bloch's <em>Effective Java, Second Edition</em> (Addison-Wesley, 2008)을 참조하세요.

현재 스레드가 대기 중이거나 대기하는 동안 스레드에 의해 중단된 java.lang.Thread#인터럽트()이면 가 InterruptedException throw됩니다. >이 예외가 <throw되면 현재 스레드의 중단된 em 상태</em>이 지워집니다. 이 예외는 위에서 설명한 대로 이 개체의 잠금 상태 복원될 때까지 throw되지 않습니다.

에 대한 Java 설명서입니다 java.lang.Object.wait(long, int).

이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.

추가 정보

적용 대상

Wait(Int64)

현재 스레드가 깨어날 때까지 대기하게 합니다. 일반적으로 <>알림을 받<거나 <중단</>내보내>>거나 일정량의 실시간이 경과할 때까지 대기합니다.

[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 입니다.

이 메서드를 호출하는 스레드가 이 개체 모니터의 소유자가 아니면 입니다.

현재 스레드가 중단되었으면 입니다. 예외가 throw되기 전에 현재 스레드의 중단된 상태 지워집니다.

설명

현재 스레드가 깨어날 때까지 대기하게 합니다. 일반적으로 <>알림을 받<거나 <중단</>내보내>>거나 일정량의 실시간이 경과할 때까지 대기합니다.

모든 면에서 이 메서드는 호출된 것처럼 wait(timeoutMillis, 0) 동작합니다. 자세한 내용은 메서드 사양을 #wait(long, int) 참조하세요.

에 대한 Java 설명서입니다 java.lang.Object.wait(long).

이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.

추가 정보

적용 대상