2011-01-26 5 views
1

Thread.interrupt()와 Thread.currentThread.interrupt()가 같은 일을하는지 또는 같은 결과를 줄지 궁금합니다. 그렇지 않다면 무엇이 다른가요?Java에서 Thread.interrupt()와 Thread.currentThread.interrupt()의 차이점은 무엇입니까?

비슷한 질문입니다 : Thread.sleep()과 Thread.currentThread.sleep()의 차이점은 무엇입니까?

Thread x = getSomeThreadInstance(); 
x.interrupt(); 

변수 x는 임의의 스레드 예를 참조 할 수

+2

Java 1.6에 대한 문서를 보면 static (정적) 버전의'interrupt()'또는 비 정적'sleep()'을 찾을 수 없습니다 ... –

답변

7

Thread.interrupt() 방법의 예를 참조하는 것으로 특정 스레드를 인터럽트.

Thread.currentThread().interrupt() 메서드는 이전과 동일하지만 현재 스레드에만 적용되어 현재 스레드 만 인터럽트합니다.

Thread x = Thread.currentThread(); 
x.interrupt(); 

이 약 Thread.sleep()Thread.currentThread().sleep() 차이가 없습니다 :에 그것은 동일합니다. sleep()Thread class에있는 정적 메서드이며 호출하는 방식에 차이가 없습니다. 호출하면 현재 실행 스레드가 표시된 시간 동안 일시 중지됩니다.

그럼에도 불구하고 인스턴스에서 정적 메서드를 호출하면 안됩니다. 즉 정적 메서드가 정적 메서드로 호출되어야한다는 의미입니다.

+0

currentThread를 중단하는 것은 어리석은 것으로 보입니다 중단 된 표시기를 설정하기 만하므로 중단 된 예외를 throw하지 않아도됩니다. –

+0

@ Nicolas, 조금 바보 같지만 실제로는 Thread.currentThread()를 호출 할 수 있습니다. interrupt()는 코드에서 InteruptException을 처리 할 때 중요하며 예외를 다시 throw 할 수 없습니다. 인터럽트를 삼가하지 마십시오 (http://www.ibm.com/developerworks/java/library/j-jtp05236/index.html). – Brad

관련 문제