자바 인터럽트 예제

Thread.interrupt()는 대상 스레드의 중단된 상태/플래그를 true로 설정하며 Thread.interrupted()를 사용하여 검사할 때 끝없는 스레드를 중지하는 데 도움이 될 수 있습니다. 참조 http://www.yegor256.com/2015/10/20/interrupted-exception.html By 규칙, 인터럽트 예외를 throw 하 여 종료 하는 모든 메서드는 인터럽트 상태를 지우기 이렇게 할 때. 그러나 인터럽트를 호출하는 다른 스레드에 의해 인터럽트 상태가 즉시 다시 설정될 수 있습니다. 위의 예제를 여러 번 실행하면 두 개의 출력이 발생할 수 있습니다. 여기에 그 기술의 예입니다. 이 클래스는 스톡 서버에 소켓을 설정하고 해당 서버의 데이터를 읽고 지정된 관찰 가능한 개체를 통해 해당 데이터를 게시합니다. 이러한 경우 read() 메서드는 종종 차단되며 스레드를 중지할 때가 되면 read() 메서드를 종료할 수 있는 방법이 있어야 합니다. 이 작업은 스레드가 읽는 소켓을 닫음으로써 수행됩니다. interrupt() 메서드의 효과는 중단 의 대상이 해당 중단에 따라 예외를 throw할 수 있는 메서드를 실행하는지 여부에 따라 달라집니다. 스레드가 sleep(), wait() 및 join() 메서드를 실행하는 경우 해당 메서드는 InterruptedException을 throw합니다. 그렇지 않으면 스레드가 검사하여 interrupt() 메서드가 호출되었는지 확인할 수 있는 플래그가 설정됩니다. [4] 폴링은 현재 스레드의 중단된 상태를 반환하고 중단 플래그를 지우는 Thread.interrupted() 메서드를 통해 발생합니다. 일반적으로 스레드는 throw 인터럽트예외와 같은 작업을 수행할 수 있습니다.

현재 스레드가 중단되었는지 여부를 나타내는 부울을 반환합니다. Thread 클래스의 정적 메서드이며 클래스 지정을 통해 호출될 수 있습니다. 이 메서드는 interrupt() 메서드에 의해 설정 된 플래그를 반환 합니다. 이전 조건 중 어느 것도 유지되지 않으면 이 스레드의 인터럽트 상태가 설정됩니다. 그러나 이 예제에서 수행한 작업은 데이터를 읽는 스레드 와 인터럽트 발생을 기다리는 스레드(시간 정이 발생할 가능성이 낮기 때문에)의 두 스레드를 시작하는 것입니다. 대기 스레드가 중단되면 읽기 스레드가 차단된 입력 스트림을 닫고 두 스레드가 모두 종료됩니다. 이렇게 하면 대기 스레드를 중단하여 스레드(및 스레드와 연결된 소켓)를 종료할 수 있습니다: Java 가상 시스템에 내장된 코드는 중단되는 스레드가 실행 중인 경우 중단된 플래그를 설정하지 않습니다. sleep(), wait() 또는 join() 메서드를 사용합니다. 다음 코드를 고려하십시오 : Java 1.0이있는 경우이 섹션에서 설명하는 다양한 인터럽트 관련 메서드가 작동하지 않는다는 것을 알 수 있습니다 .

Comments

No one has said anything yet.

Comments are closed.