> Java > java지도 시간 > 본문

Java에서는 잠금을 획득하지 않고 wait() 메서드를 호출할 수 있나요?

WBOY
풀어 주다: 2023-09-03 17:21:07
앞으로
761명이 탐색했습니다.

Java에서는 잠금을 획득하지 않고 wait() 메서드를 호출할 수 있나요?

잠금을 획득하지 않고는 wait() 메서드를 호출할 수 없습니다. Java에서는 잠금이 획득되면 객체에 대해 wait() 메서드를 호출해야 합니다(시간 초과 여부와 상관없이 가능). 잠금을 획득하지 않고 wait() 메소드를 호출하려고 하면 java.lang.IllegalMonitorStateException 예외가 발생할 수 있습니다.

Example

public class ThreadStateTest extends Thread {
   public void run() {
      try {
<strong>         </strong>wait(1000);
      } catch(InterruptedException ie) {
         ie.printStackTrace();
      }
   }
   public static void main(String[] s) {
      ThreadStateTest test = new ThreadStateTest();
<strong>      </strong>test.start();
   }
}
로그인 후 복사

위의 예에서는 잠금을 획득하지 않고 wait() 메서드를 호출해야 하며, 이는 런타임에 IllegalMonitorStateException을 생성합니다. 이 문제를 해결하려면 wait() 메서드를 호출하기 전에 잠금을 획득하고 run() methodsynchronized를 선언해야 합니다.

출력

Exception in thread "Thread-0" java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at ThreadStateTest.run(ThreadStateTest.java:4)
로그인 후 복사

위 내용은 Java에서는 잠금을 획득하지 않고 wait() 메서드를 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿