데몬 스레드는 응용 프로그램 주 스레드가 종료 된 후에 VM에 의해 중지되므로 항상 더 나은 것으로 보입니다. 일부 작업을 인터럽트 할 수없는 경우 이외에 비 데몬 스레드를 사용하는 다른 이유가 있습니까? 감사합니다. .왜 Java에서 비 데몬 스레드를 사용해야합니까?
답변
VM은 실행 중간에 데몬 스레드를 중지 할 수 있으며 영구 데이터가 손상 될 수 있습니다.
스레드가 안전하게 죽을 때를 더 많이 제어해야하는 경우 데몬이되지 않도록하십시오.
귀하의 모든 main
이 관련이있다가 부트 스트랩 및 HTTP 리스너 스레드, 수용 스레드, 파일 시스템 스캔 스레드, RMI 스레드를 시작하는 것입니다 (예를 들어, 서블릿 컨테이너) 서버를 작성하는 등
후 부트 스트랩이 완료되면 모든 것이 비동기 적으로 발생하므로 main
은 더 이상 필요하지 않습니다. 이 경우 모든 필수 스레드는 이이되어야하므로 데몬이 아니므로 main
메서드를 사용합니다.
스윙 (데스크톱 프로그래밍)에서도 main
의 유일한 요구 사항은 기본 창 (JFrame
)을 초기화하는 것입니다. 나머지는 Swing 리스너 스레드 (EDT)와 다양한 백그라운드 스레드에서 발생합니다.
다른 스레드가 종료되기 때문에 중지하고 싶지 않은 작업을 수행 할 때마다 비 데몬 스레드를 사용합니다. 스레드의 유일한 목적이 다른 스레드를 지원하는 것이라면 데몬 스레드를 사용하는 것이 좋습니다.
주 스레드가 종료 될 때 종료하려면 System.exit()을 호출하면됩니다. 많은 응용 프로그램은 기본 스레드를 유지하지 않으며 모든 작업은 시작 스레드에 있습니다.
실제로 작업을 수행하는 동안 JVM을 종료하지 않으려면 실제로 자연스럽게 완료되어야하는 ("실행"메소드는 그대로두고) 모든 스레드가 이 아닌은 데몬 스레드 여야합니다.
이것은 시작한 모든 스레드에 적용되며 자연스럽게 종료 될 것으로 예상됩니다.
일반적으로 데몬 스레드는 규칙이 아니라 예외입니다.
큰 차이점은 데몬 스레드가 종료되는 방법입니다. JVM은 단지 그것들을 멈춘다.
finally
블록 당신은 같은 파일로 알려진 상태로 남아있을 필요가 것들에 대한 데몬 스레드를 사용하지 않으려는- 스택
를 풀려하지 않는 실행되지 않습니다 I/O, 데이터베이스 트랜잭션 등.
- 1. 비 데몬 쓰레드가 데몬 1을 기다리고 있다면?
- 2. 데몬 스레드를 제어하는 방법은 무엇입니까?
- 3. 포크 또는 스레드를 사용해야합니까?
- 4. 내가 Windows에서 데몬 스레드를 만들려고 해요 데몬 스레드
- 5. Java 애플릿 리로드에서 데몬 스레드를 죽입니다.
- 6. Java에서 스레드를 닫는 방법?
- 7. Java에서 스레드를 수동으로 중지해야합니까?
- 8. 누가 Java에서 스레드를 관리합니까
- 9. 자바 스레드 모니터링. 데몬 라이브가 아닌 스레드를 찾는 방법은?
- 10. 데몬 프로세스에 C++이나 스크립트를 사용해야합니까?
- 11. Java에서 정규 표현식을 사용해야합니까?
- 12. Java에서 Qt Jambi를 사용해야합니까?
- 13. 데몬 스레드는 언제 유용합니까?
- 14. Java에서 다른 스레드를 실행하려면 어떻게해야합니까?
- 15. Java에서 스레드를 사용하는 소켓 프로그래밍
- 16. Java에서 비 차단 연결
- 17. Java에서 비 -Ints 켜기
- 18. 파이썬 멀티 스레딩 : 데몬 스레드를 계속 실행하는 방법
- 19. Java EDT에서 새 스레드를 시작하려면 왜 EventQueue가 필요합니까? (자바)
- 20. 왜 namespace std를 사용해야합니까?
- 21. 왜 glBindAttribLocation을 사용해야합니까?
- 22. html 엔티티를 사용해야합니까? 왜?
- 23. 왜 MXML을 사용해야합니까?
- 24. 왜 뷰 모델을 사용해야합니까?
- 25. MVC3 왜 html.editorfor를 사용해야합니까?
- 26. 왜 ImportingConstructor를 사용해야합니까?
- 27. 왜 부유물을 사용해야합니까?
- 28. C++/CLI : 왜 사용해야합니까?
- 29. 왜 gitignore를 사용해야합니까?
- 30. 왜 스프링 안드로이드를 사용해야합니까?
데몬 스레드는 실행중인 다른 스레드에 서비스를 제공합니다. 실행중인 스레드가 항상 서비스를 필요로하는 것은 아닙니다. –
GUI 요소를 화면에 던져 넣으면 비 데몬'Thread'가 생깁니다. 또한 방해가 될 수 있습니다. –
FYI : 실제로는 주 스레드가 아닙니다. 비 데몬 (non-daemon) 기술 용어 인 사용자가없는 즉시 JVM이 종료됩니다. –