데몬 쓰레드 예제

isdaemon() 메서드를 호출하여 스레드가 데몬 스레드인지 여부를 확인할 수 있습니다. 데몬 스레드는 앞에서 설명한 대로 백그라운드에서 작동하므로 사용자(일반) 스레드가 작업을 수행하면 JVM이 갑자기 데몬 스레드를 종료합니다. 따라서 모든 비데몬이 종료되는 즉시 JVM은 예상대로 올 수 있는 절차없이 모든 데몬을 즉시 종료합니다. 데몬 스레드는 모두가 설명했듯이 JVM이 종료되도록 제한하지 않으므로 기본적으로 출구 지점에서 응용 프로그램에 대한 해피 스레드입니다. 스레드는 setDaemon 메서드를 사용 하 여 데몬 하나를 지정할 수 있습니다., 그들은 일반적으로 종료 하지 않습니다., 둘 다 중단 되지 않습니다.. 응용 프로그램이 중지되면 중지됩니다. 데몬 스레드는 가비지 콜렉션(gc) 등과 같은 작업을 수행하기 위해 백그라운드에서 실행되는 낮은 우선 순위 스레드(JVM의 컨텍스트)로, 모든 사용자 스레드(비데몬 스레드)가 실행중인 경우에도 JVM이 종료되는 것을 방지하지 않습니다. 실행을 완료합니다. JVM은 모든 사용자 스레드 (비 데몬 스레드)가 실행을 완료할 때 자체적으로 종료되며 JVM은 데몬 스레드가 실행되는지 여부를 상관하지 않습니다 (사용자 스레드가 완료되면) 스레드를 종료하고 종료 합니다. 자체. 여기서 주요 메서드 스레드는 사용자 스레드이고 dt는 dt.setDaemon(true)으로 설정되어 있으므로 데몬 스레드입니다. 이제 혼란 지점 스레드 dt = 새 스레드 (새 데몬 스레드(새 데몬 스레드() “dt”); 는 클래스의 이름 때문에 이지만 실제로 필요한 모든 스레드의 runnable입니다. 스레드를 데몬 스레드로 설정하려면 Thread.setDaemon()을 호출하기만 하면 됩니다.

이 예제에서는 스레드 클래스를 확장 하는 NewThread 클래스를 사용 합니다. 데몬 스레드는 일반적으로 프로그램이 가비지 수집기 스레드처럼 실행되는 한 백그라운드에서 일반 서비스를 제공하는 데 사용됩니다. Java 가상 시스템이 시작되면 일반적으로 일부 지정된 클래스의 main이라는 메서드를 호출하는 단일 사용자(비데몬) 스레드가 있습니다. Java 가상 머신은 데몬 스레드가 아닌 모든 스레드가 종료될 때까지 스레드를 계속 실행하고 JVM은 데몬 스레드가 실행을 완료할 때까지 기다리지 않습니다. 마지막 비데몬 스레드가 완료되자마자 JVM은 얼마나 많은 데몬 스레드가 존재하거나 실행중이든 상관없이 종료됩니다. 공용 정적 보이드 메인(String[] args) { System.out.println(Thread.currentThread(.isDaemon()); thread.setDaemon(true)은 자바에서 데몬 스레드를 만드는 데 사용됩니다. 이 메서드는 스레드가 시작 되기 전에 호출 해야 그렇지 않으면 그것은 throw IllegalThreadStateException. 예 2: 데몬스레드Ex2.java 스레드(start() 메서드를 시작한 후 setDaemon() 메서드를 호출하면 IllegalThreadStateException이 throw됩니다. 이것은 분명히 스레드를 시작하기 전에 setDaemon() 메서드를 호출 할 수 있음을 의미합니다.

예 1: DaemonThreadExample1.java 이 예제에서는 setDaemon() 및 isdaemon() 메서드의 사용을 보여 주는 예제입니다. setdaemon (진실 / 거짓) ? 이 메서드는 스레드가 데몬 스레드임을 지정하는 데 사용됩니다. 2) 데몬 스레드는 JVM이 종료될 때 사용자 스레드와 다르게 처리되고, 마지막으로 블록이 호출되지 않고, 스택이 잘못되지 않고 JVM이 종료될 때 와 다르게 처리됩니다. 데몬스레드는 보통 실행 가능하고 dt.setDaemon(true); 는 사용자 스레드에서 데몬 스레드로 변환되는 명령문입니다. Java에서 main 메서드를 실행하는 주 스레드에서 만든 스레드는 기본적으로 비 데몬입니다. setdaemon (true)을 호출하여 명시적으로 데몬을 만들 때까지 비 데몬 남아있다. 위의 모든 답변은 좋습니다. 차이점을 설명하기 위한 간단한 작은 코드 조각은 다음과 같습니다.