> Java > java지도 시간 > Java에서 InterruptedException을 어떻게 처리해야 합니까?

Java에서 InterruptedException을 어떻게 처리해야 합니까?

Barbara Streisand
풀어 주다: 2024-12-30 03:34:23
원래의
189명이 탐색했습니다.

How Should InterruptedExceptions Be Handled in Java?

Java에서 중단 처리: 두 가지 접근 방식 및 모범 사례

Java에서 InterruptedException을 처리하는 것은 이 예외를 발생시킬 수 있는 메서드를 처리하는 데 중요합니다. 이 중단을 처리하기 위한 두 가지 일반적인 접근 방식은 다음과 같습니다.

중단 전파(첫 번째 접근 방식)

try {
 // ...
} catch (InterruptedException e) { 
   Thread.currentThread().interrupt(); 
}
로그인 후 복사

이 접근 방식은 InterruptedException이 메서드의 유효한 결과를 나타내고 다음에 전파되어야 하는 경우에 적합합니다. 발신자. 예를 들어, 메서드가 InterruptedException을 발생시키는 차단 네트워크 호출을 수행하는 경우 이 예외가 전파되어 작업이 중단되었음을 나타내는 것이 합리적입니다.

중단된 플래그 포착 및 설정(두 번째 접근 방식)

try {
 //...
} catch (InterruptedException e) {
   Thread.currentThread().interrupt();
   throw new RuntimeException(e);
}
로그인 후 복사

이 접근 방식은 중단 시 메서드가 유효한 결과를 생성할 수 없어 종료되어야 할 때 선호됩니다. 중단된 플래그(Thread.currentThread().interrupt())를 설정하면 스레드가 중단된 상태로 유지되어 중단을 호출자에게 알립니다.

최상의 접근 방식 결정

적절한 방법 접근 방식은 상황에 따라 다릅니다.

  • 예외: 메서드가 중단을 허용하고 정상적인 반환 값을 생성할 수 없는 경우(예: 네트워크 호출 차단) InterruptedException을 throw하여 메서드를 선언하고 예외가 전파되도록 하세요.
  • 중단된 플래그 포착 및 설정: 메서드가 작업을 완료할 수 없거나 유효한 결과를 반환할 수 없는 경우 예외를 포착하고 중단된 플래그를 설정한 후 throw합니다. 런타임 예외.

예(두 번째 접근 방식)

void printSum(Server server) {
     try {
         int sum = computeSum(server);
         System.out.println("Sum: " + sum);
     } catch (InterruptedException e) {
         Thread.currentThread().interrupt();  // set interrupt flag
         System.out.println("Failed to compute sum");
     }
}
로그인 후 복사

여기서 printSum 메서드는 중단되면 작업을 완료할 수 없으므로 InterruptedException을 포착하고 인터럽트 플래그를 설정합니다. 대체 메시지를 인쇄합니다.

위 내용은 Java에서 InterruptedException을 어떻게 처리해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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