InterruptedException의 해석
차단 방법
몇몇 다중 스레드와 관련된 방법은 막는 방법이다. 예를 들어 Thread.sleep(), Thread.wait(), Thread.join().
이러한 방법의 집행은 일반적으로 비교적 긴 시간을 필요로 하며, 코드가 막힌 방법까지 집행될 때, 일반적으로 이 방법이 되돌아오기를 기다려야 한다
계속 실행할 수 있고 InterruptedException은 특수한 메커니즘을 제공하여 차단을 앞당겨 끝낼 수 있습니다.
인터럽트 변수
모든 루틴은 bool 변수를 유지합니다. 루틴이 중단 (true) 또는 비중단 상태 (false) 임을 나타냅니다.루틴의 초기 상황에서 중단 변수는false입니다.
이 변수의 bool 값은 Thread를 통과할 수 있습니다.isInterrupted() 메서드를 사용하여 Thread.인터럽트 () 방법으로 인터럽트를 제거합니다. (인터럽트 변수는false로 설정됩니다.)
스레드 인터럽트
하나의 스레드는 Thread를 호출할 수 있습니다.interrupt () 방법으로 다음 절차에 따라 다른 스레드를 중단합니다.
1. 중단 변수가true로 설정됩니다.
2. 라인이 차단 방법을 실행하면 이 방법은 차단을 취소하고 중단 변수를false로 다시 설정합니다.
(이런 메커니즘은 차단 방법 내부에서 끊긴 변수의 값을 끊임없이 조회하여 실현하는 것이다)
예:
class ThreadTest implements Runnable {
@Override
public void run() {
System.out.println("before sleep");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println(Thread.currentThread().getName());
Thread.currentThread().interrupt();
System.out.println("after interrupt");
}
System.out.println("after sleep");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println(Thread.currentThread().getName());
Thread.currentThread().interrupt();
System.out.println("after interrupt");
}
System.out.println("after sleep");
}
}
public class ThreadBasic {
public static void main(String[] args) {
Thread t = new Thread(new ThreadTest(), "thread-1");
t.start();
t.interrupt();
System.out.println(t.isInterrupted());
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exception in thread main java.lang. NoClassDefFoundError 오류 해결 방법즉,/home/hadoop/jarfile) 시스템은 Hello World 패키지 아래의class라는 클래스 파일을 실행하고 있다고 오인하여 시스템의 CLASSPATH 아래 (일반적으로 현재 디렉터리를 포함) Hell...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.