잠금을 획득하지 않고는 wait() 메서드를 호출할 수 없습니다. Java에서는 잠금이 획득되면 객체에 대해 wait() 메서드를 호출해야 합니다(시간 초과 여부와 상관없이 가능). 잠금을 획득하지 않고 wait() 메소드를 호출하려고 하면 java.lang.IllegalMonitorStateException 예외가 발생할 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!