Java의 Thread.sleep은 언제 InterruptedException을 발생합니까? 그것을 무시해도 안전합니까? 나는 멀티 스레딩을하고 있지 않다. 난 그냥 몇 가지 작업을 다시 시도하기 전에 몇 초 기다리고 싶어.Java의 Thread.sleep은 언제 InterruptedException을 발생합니까?
답변
일반적으로 예외는 무시하지 않아야합니다. 다음 논문에서 살펴 보자 :
인터럽트
을 삼키지 마십시오 때때로의 Runnable에 의해 정의 된 작업이 인터럽트 메소드를 호출 할 때와 아닌 옵션이 예외 : InterruptedException을한다 던지. 이 경우 InterruptedException을 다시 게시 할 수는 없지만 사용자는 아무 것도하고 싶지 않습니다. 차단 메서드가 인터럽트를 감지하고 InterruptedException을 throw하면 은 인터럽트 된 상태를 지 웁니다. InterruptedException 을 catch했지만 다시 throw 할 수없는 경우 중단이 발생했음을 나타내는 증거를 유지해야하므로 호출 스택의 코드가 위로 올라가서 중단에 대해 알아보고 원하는 경우 응답 할 수 있습니다. 이 태스크 은 interrupt()를 호출하여 현재 스레드를 "다시 인터럽트"합니다 (Listing 3 참조). 최소한, InterruptedException을 catch하고이를 다시 전복하지 않으면 리턴하기 전에 현재 스레드를 다시 인터럽트하십시오.
public class TaskRunner implements Runnable { private BlockingQueue<Task> queue; public TaskRunner(BlockingQueue<Task> queue) { this.queue = queue; } public void run() { try { while (true) { Task task = queue.take(10, TimeUnit.SECONDS); task.execute(); } } catch (InterruptedException e) { // Restore the interrupted status Thread.currentThread().interrupt(); } } }
여기에 전체 용지를 참조하십시오에서 :
http://www.ibm.com/developerworks/java/library/j-jtp05236/index.html?ca=drs-
페이지가 없습니다. 게시물을 업데이트 할 수 있습니까? – Laurence
http://www.ibm.com/developerworks/java/library/j-jtp05236/index.html?ca=drs- –
단일 스레드 코드에서 처리 할 수있는 고체 쉬운 방법을 것 비 e를 잡아서 RuntimeException에서 다시 시도하여 모든 메소드에 대해이를 선언 할 필요가 없도록하십시오.
Java 전문가 뉴스 레터 (내가 권장할만한 것이 좋습니다)는 interesting article on this이며 InterruptedException
을 처리하는 방법을가집니다. 읽고 읽고 소화 할 가치가 있습니다.
InterruptedException
은 일반적으로 절전 모드가 중단 될 때 발생합니다.
중개 된 자체가 아니라 실행중인 스레드이기 때문에 잘못되었습니다. 인터럽트 된 스레드 상태입니다. 잠자기 방법이 종료됩니다. – ubuntudroid
InterruptedException이 throw되면 스레드가 해당 스레드를 인터럽트 (일반적으로 종료)하려고 함을 의미합니다. 이것은 thread interrupt() 메소드에 대한 호출에 의해 트리거됩니다. wait 메소드는이를 감지하고 InterruptedException을 throw하므로 catch 코드가 즉시 종료 요청을 처리 할 수 있고 지정된 시간이 끝날 때까지 기다릴 필요가 없습니다.
단일 스레드 응용 프로그램 (및 일부 다중 스레드 응용 프로그램)에서이 응용 프로그램을 사용하면 해당 예외가 발생하지 않습니다. 빈 캐치 절을 사용하여이를 무시하면 나는 권하지 않습니다. InterruptedException을 throw하면 (자), thread의 인터럽트 상태가 클리어됩니다. 따라서 적절하게 처리되지 않으면 그 정보는 없어집니다. 그러므로 나는 달릴 것을 제안 할 것이다 :
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
// code for stopping current task so thread stops
}
그 상태를 다시 설정한다. 그 후에 실행을 마칩니다.이것은 결코 사용하기 힘든 올바른 행동이 될 것입니다. 더 좋을 수도 무엇
는 추가하는 것입니다 : catch 블록에
} catch (InterruptedException e) {
assert false;
}
문. 그것은 기본적으로 결코 일어나지 않아야한다는 것을 의미합니다. 따라서 코드가 발생할 수있는 환경에서 코드가 다시 사용되면 불만을 토로합니다.
Java의 어설 션은 [기본적으로 꺼짐]입니다 (http://stackoverflow.com/a/2758645/1143274). 그래서'RuntimeException'을 던지면됩니다. –
Thread
의 sleep()
및 wait()
과 같은 메소드는 InterruptedException
을 던질 수 있습니다. 어떤 다른 thread
이 대기 중이거나 잠자고있는 thread
을 방해하려고 할 때 발생합니다.
- 1. 브라우저의로드 이벤트는 언제 발생합니까?
- 2. 카테고리는 언제 효력을 발생합니까?
- 3. ASP.NET 인증은 언제 발생합니까?
- 4. 언제 HTTPS 핸드 셰이크가 발생합니까?
- 5. 딥 복사는 언제 QList에 발생합니까?
- 6. 이 오류 보고서는 언제 발생합니까?
- 7. glibc에서 파일 스트림 잠금이 언제 발생합니까?
- 8. 언제 DOM 환경에서 리플 로우가 발생합니까?
- 9. InterruptedException을 catch하여 Thread.currentThread.interrupt()를 호출하는 이유는 무엇입니까?
- 10. 언제 ASP .NET 페이지 수명주기 동안 DataBinding 이벤트가 발생합니까?
- 11. 코어 데이터에서 유효성 검사는 언제 발생합니까? 메시지 : 워드 프로세서
- 12. 언제 이것이 발생합니까? 스레드가 중요한 섹션에있는 동안 일시 중단되었습니다.
- 13. 언제 href = "javascript :"IE7에서 혼합 된 콘텐츠가 발생합니까?
- 14. Fastmm4를 사용할 때 가상 메모리 문제는 언제 발생합니까?
- 15. 언제 ConcurrentSkipListMap을 사용해야합니까?
- 16. Java의 PERM 영역
- 17. 언제 "javascript : ..."가 필요합니까?
- 18. Java의 Collection과 List의 차이점은 무엇입니까?
- 19. 언제 예상하고 언제 스텁을합니까?
- 20. Java의 우선 순위 대기열
- 21. 언제
- 22. 언제
- 23. 언제
- 24. Java의 Kerberos 인증 - java의 "로그인"동작이 "kinit"와 동일합니까?
- 25. 산술 오버플로에서 하드웨어 인터럽트가 발생합니까?
- 26. 코코아 콜백은 언제 제어됩니까?
- 27. C# Monitor.Wait()에서 가짜 웨이크 업이 발생합니까?
- 28. Windows 프로세스에서 언제 메모리가 부족합니까?
- 29. Visual C++ 2008에서 비정상적인 동작이 발생합니까?
- 30. Java의 정적 클래스에는 어떤 것이 있습니까?
http://stackoverflow.com/questions/1024651/do-i-have-to-worry-about-interruptedexceptions-if-i-dont-interrupt-anything-myse –
어떤 의미에서 "무시" . 'InterruptedException'은 잡힌 예외이므로,'Thread'를 조인하거나 휴면 상태로 만드는 메소드 나'Object'에서'wait()'을 호출하는 메소드에 대해 이런 유형의 예외를 처리하거나 선언하지 않으면 컴파일 할 수 없습니다. – 8bitjunkie
이 문서는이 메커니즘을 이해하는 데 도움이 될 수 있습니다. [InterruptedException로 수행 할 작업을 무엇입니까?] (http://www.yegor256.com/2015/10/20/interrupted-exception.html) – yegor256