Executors.newSingleThreadExecutor()
이 반환하는 ExecutorService
을 사용하는 경우 어떻게 중단합니까?ExecutorService의 스레드를 인터럽트하는 방법
답변
이렇게하려면 execute()
을 호출하는 대신 submit()
에 ExecutorService
으로 작업해야합니다. 이렇게하면 예약 된 작업을 조작하는 데 사용할 수있는 Future
이 반환됩니다. 특히 연결된 Future
에 cancel(true)
을 호출하여 현재 실행중인 작업을 중단 할 수 있습니다. 또는 작업이 아직 실행되지 않은 경우 실행을 모두 건너 뛸 수 있습니다.
그런데 Executors.newSingleThreadExecutor()
에 의해 반환 된 개체는 실제로 ExecutorService
입니다.
executor의 내부 관리 스레드를 인터럽트하는 또 다른 방법은 ExecutorService
에서 shutdownNow(..)
메서드를 호출하는 것입니다. 그러나 @ erickson의 해결책과 반대되는 점은 전체 ThreadPoolExecutor
이 더 이상 사용할 수 없게된다는 점입니다.
이 접근법은 ExecutorService
이 더 이상 필요하지 않고 Future
인스턴스의 탭을 유지하는 것이 불필요한 경우 유용합니다 (이 예는 응용 프로그램의 exit(..)
메서드의 가장 좋은 예입니다). ExecutorService#shutdownNow(..)
의 javadoc에서
관련 정보 :
시도가 실행 중의 액티브 한 태스크 모든 정지 할 수는 대기 중의 태스크의 처리를 정지하고, 실행을 대기하고 있던 태스크의리스트를 돌려줍니다.
적극적으로 작업을 처리하기 위해 최선의 노력을하지 않고서도 처리를 중지 할 수 없습니다. 예를 들어, 일반적인 구현은 Thread.interrupt를 통해 취소하므로 인터럽트에 응답하지 못한 작업은 절대로 종료되지 않을 수 있습니다.
- 1. 실행자 스레드를 인터럽트하는 방법
- 2. Java - 사용중인 스레드를 인터럽트하는 방법
- 3. 모니터에서 다른 스레드를 인터럽트하는 방법 스레드
- 4. 대기중인 C++ 0x 스레드를 인터럽트하는 방법은 무엇입니까?
- 5. java.util.Scanner nextLine 호출을 인터럽트하는 방법
- 6. 차단 소켓 연결을 수행하는 스레드를 인터럽트하는 방법은 무엇입니까?
- 7. 경고 대기를 기다리지 않고 대상 스레드를 인터럽트하는 APC 변형이 있습니까?
- 8. ExecutorService의 종료 시간 결정
- 9. "대기 중"스레드를 깨우는 방법?
- 10. Spring Bean을 ExecutorService의 ThreadLocal 인스턴스처럼 동작하게 만들기
- 11. jQuery 애니메이션을 인터럽트하는 방법은 무엇입니까?
- 12. ExecutorService의 향후 작업이 실제로 취소되지 않음
- 13. CUDA가 스레드를 예약하는 방법
- 14. 다중 스레드를 사용하는 방법
- 15. POCO 스레드를 사용하는 방법?
- 16. mysql 스레드를 찾는 방법
- 17. Java에서 스레드를 닫는 방법?
- 18. C# 스레드를 죽이는 방법?
- 19. openmp로 스레드를 생성하는 방법
- 20. 배경 스레드를 시작하는 방법?
- 21. forkjoinpool에 스레드를 추가하는 방법
- 22. 스레드를 평등하게 비교하는 방법
- 23. 스레드를 멈출 수있는 방법
- 24. pygtk에서 스레드를 사용하는 방법
- 25. 스레드를 "비우는"방법
- 26. 장고 스레드를 중지하는 방법
- 27. 여러 스레드를 관리하는 방법
- 28. 처리 중에 while 문을 인터럽트하는 방법은 무엇입니까?
- 29. Eclim에서 실행중인 Java 프로세스를 인터럽트하는 방법은 무엇입니까?
- 30. 언제든지 스레드를 중지하십시오.
이렇게하려면 스레드가 인터럽트 가능함을 수동으로 확인하지 않아도됩니다. 모든 스레드가 인터럽트 될 수있는 것은 아닙니다. 어쨌든 나는 생각한다. –
예, 여기서는 작업을 실행하는 스레드를 인터럽트하는 방법에 대해 설명합니다. 작업이 중단에 응답하는지 여부는 전혀 다른 질문입니다. 그것은 작업이하는 일에 달려 있습니다. – erickson
@erickson 나는 비슷한 질문 [here]을 가지고있다. (http://stackoverflow.com/questions/29159184/how-can-i-interrupt-resttemplate-call-as-soon-as-my-thread-is-interrupted) 스레드 인터럽트와 관련있다. 가능하면저기서 저를 도울 수 있습니까? 아직 어떤 응답도받지 못했기 때문에 어떤 도움을 주시면 대단히 감사하겠습니다. – john