스레드 ID가 주어지면 스레드를 중단하거나 중지 하시겠습니까? 예를 들어, 스레드 ID의 형식이 길어야합니다. Thread.enumerate 및 Thread.activeCount스레드 ID를 기반으로하는 인터럽트 스레드
Thread findThreadById(long id) { Thread [] threads = new Thread[Thread.activeCount() * 2]; int count = Thread.enumerate(threads); for (int i = 0; i < count; i++) { if (threads[i].getId() == id) { return threads[i]; } } return null; }
Thread.activeCount (의 두 배)와
-1
A
답변
0
시작 위 스레드의 수가 Thread.activeCount에 호출 사이에 증가 된 경우를 잡으려고하고 Thread.enumerate. 필요하거나 그렇지 않을 수도 있지만, 수 바이트의 메모리 이외에는 비용이 많이 들지 않아야합니다.
원하는 Thread 인스턴스가 없으므로 Thread.interrupt를 호출하면됩니다.
참고 - 스레드의 하드 중지 및 종료는 나쁜 형식입니다. 일종의 조건 (다른 스레드에 의해 설정 됨)을 기반으로 스레드 종료를 자체적으로 수행하는 방법을 찾는 것이 훨씬 좋습니다.
0
스레드의 협력을 통해 제공되는 모든 방법을 사용합니다. 실의 협조 없이는 할 수 없습니다. 협력없이 스레드를 인터럽트하거나 중지하면 프로세스가 파괴됩니다. (스레드가 다른 스레드가 필요로하는 잠금을 스레드가 복원하려고했던 불변성을 깨뜨린다고 가정하십시오.)
이 질문은 스레드와 프로세스에 대한 생각이 부족한 경향이 있습니다. 스레드 작업을 완료하려면 협조. 언제든지 외부에서 스레드에 "도달"해야 올바른 작업을 수행 할 필요가 있다고 생각할 때, 스레드가 처음부터 잘못 코딩되었다는 경고 여야합니다. 쓰레드가 무엇을하고, 무엇을하고 싶은지를 코드화하십시오. 그런 다음 중단하거나 중지하지 않아도됩니다.
어떤 이유로 든 가능하지 않은 경우 해당 스레드의 코드에 인터럽트 또는 중단 기능을 디자인하십시오.
관련 문제
- 1. 스레드 ID를 기반으로하는 adb logcat의 필터 출력
- 2. 스레드 인터럽트 플래그 의미
- 3. 펄 스레드 인터럽트 수면
- 4. 부스트 (v1.33.1) 스레드 인터럽트
- 5. 전체 스레드 인터럽트
- 6. 부스트 스레드 인터럽트
- 7. SwingWorker 인터럽트 스레드
- 8. 네이티브 스레드 인터럽트
- 9. 파이썬 메인 스레드 인터럽트
- 10. 단일 스레드 인터럽트 절전
- 11. 파이썬 스레드 인터럽트 잠
- 12. C# 스레드 - 인터럽트
- 13. 스레드 인터럽트 대안?
- 14. 음악 재생시 인터럽트 스레드
- 15. DatagramSocket.receive에서 스레드 인터럽트
- 16. Java에서 스레드 인터럽트
- 17. JButton이있는 인터럽트 스레드
- 18. 값을 기반으로하는 스레드 동기화
- 19. 인터럽트 처리기 내부에서 스레드 시작
- 20. 자바 스레드 인터럽트, 스레드가 null입니다.
- 21. C# if/else 스레드 인터럽트
- 22. 언제 스레드, 인터럽트 및 조인
- 23. Java에서 정상적으로 실행중인 스레드 인터럽트
- 24. 스레드 인터럽트 및 ActionListener Java
- 25. 슬리핑 스레드 인터럽트 또는 중지
- 26. Java에서 외부 메서드 호출을 인터럽트 스레드
- 27. 대기 시간 동안 블로킹하지 않고 인터럽트 스레드
- 28. run()의 구현에 스레드 인터럽트 추가
- 29. 스레드 및 인터럽트 : 계속 하시겠습니까? 종료합니까?
- 30. 작업 병렬 라이브러리 스레드 중단/인터럽트
[This] (http://stackoverflow.com/questions/7786305/stopping-a-specific-java-thread) 도움이 될 수 있습니다. – Akshay