> Java > java지도 시간 > 본문

Java에서 대기 통화 중단을 해결하는 방법

WBOY
풀어 주다: 2023-04-25 10:34:06
앞으로
1282명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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