1.해결책
(1) Java 스레드를 사용할 때 wait 메소드가 자주 사용되며, wait 메소드가 호출될 때 중단되면 jvm은 중단을 캡처하고 대기 명령을 계속 호출합니다.
(2) 이때 인터럽트 전송 방식을 사용해도 아무런 효과가 발생하지 않습니다.
(3) 대기 메서드를 캡슐화하고 예외를 포착한 다음 예외 실행을 중지해야 합니다.
2. 예
public static void wait(Object obj) { boolean interrupted = true; while (interrupted) { interrupted = false; try { obj.wait(); } catch (InterruptedException e) { interrupted = true; } } } public static void wait(Object obj, int timeout) { boolean interrupted = true; long startTime = System.currentTimeMillis(); int sleepTimeout = timeout; while (interrupted) { interrupted = false; try { obj.wait(sleepTimeout); } catch (InterruptedException e) { interrupted = true; long now = System.currentTimeMillis(); sleepTimeout -= now - startTime; startTime = now; if (sleepTimeout < 0) { interrupted = false; } } } }
위 내용은 Java에서 대기 통화 중단을 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!