Object.Wait 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
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()
.
이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.
추가 정보
- Notify()
- NotifyAll()
- Wait(Int64)
- <xref:Java.Lang.Object.Wait(System.Int64%2c+System.Int32)>
- Thread
적용 대상
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 >
999999
이 nanos
면 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)
.
이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.
추가 정보
- Notify()
- NotifyAll()
- Wait()
- <xref:Java.Lang.Object.Wait(System.Int64%2c+System.Int32)>
- Thread
적용 대상
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)
.
이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.
추가 정보
- Notify()
- NotifyAll()
- Wait()
- <xref:Java.Lang.Object.Wait(System.Int64%2c+System.Int32)>
- Thread