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

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

WBOY
WBOY앞으로
2023-09-03 17:21:07764검색

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으로 문의하시기 바랍니다. 삭제