Java의 데몬 스레드 : 방법이 무엇인지 파악



Java의 데몬 스레드는 백그라운드에서 실행되는 사용자 스레드에 서비스를 제공합니다. 그 방법과 사용자 스레드와 어떻게 다른지 알아보십시오.

스레드는 경량 프로세스입니다. 스레드는 CPU주기 낭비를 방지하여 비 효율성을 줄입니다. 인기 있고 쉬운 프로그래밍 언어 인 Java는 다음과 같은 기본 제공 지원을 제공합니다. . 모든 스레드에는 우선 순위가 있으며 우선 순위가 높은 스레드가 더 빠르게 실행되는 경향이 있습니다. 다른 스레드와 달리 Java의 데몬 스레드는 백그라운드에서 실행되는 우선 순위가 낮은 스레드입니다.

이 블로그에서는 다음 순서로 Java Daemon 스레드를 소개합니다.





시작하자. :-)



배열 자바에서 가장 큰 수 찾기

Java-Java의 데몬 스레드-Edureka

Java에서 데몬 스레드는 무엇입니까?

Java의 데몬 스레드는 백그라운드에서 실행되는 사용자 스레드에 서비스를 제공합니다. 가비지 수집과 같은 작업을 수행하는 데 사용되는 우선 순위가 낮은 스레드로 간주됩니다. Java에서는 모든 스레드가 우선 순위를 가지며 우선 순위가 높은 스레드가 더 빠르게 실행되는 경향이 있습니다. 또한, 자바 가상 머신 (JVM) 이 스레드를 자동으로 종료합니다. 데몬 스레드 자체가 실행 중이더라도 모든 사용자 스레드가 실행을 완료하면 JVM이 종료되는 것을 막을 수 없습니다.

계속해서 데몬 스레드가 사용자 스레드 (데몬이 아님)와 어떻게 다른지 살펴 보겠습니다.



데몬 스레드와 사용자 스레드

데몬 스레드와 사용자 스레드의 주요 차이점은 JVM 때문입니다. 위에서 설명한 것처럼 Java Virtual Machine은 사용자 스레드가 완료 될 때까지 기다리는 동안 데몬 스레드가 실행을 완료 할 때까지 기다리지 않습니다. 아래 표를 사용하여 Daemon 스레드와 사용자 스레드 간의 몇 가지 차이점을 살펴 보겠습니다.

데몬 스레드 사용자 스레드 (비 데몬)

데몬 스레드는 JVM에 의해 생성됩니다.

사용자 스레드는 애플리케이션 자체에서 생성됩니다.

JVM은 실행을 기다리지 않습니다.

JVM은 실행이 완료 될 때까지 대기합니다.

낮은 우선 순위 스레드

우선 순위가 높은 스레드

백그라운드 작업에 사용 (중요하지 않음)

포 그라운드 작업에 사용 (중요)

삶은 사용자 스레드에 달려 있습니다.

삶은 독립적이다

이제 데몬 스레드와 사용자 스레드의 차이점을 이해 했으므로 스레드가 데몬이 아닌 스레드인지 확인하는 예제 프로그램을 살펴 보겠습니다.

public class ExampleThread extends Thread {@Override public void run () {System.out.println ( 'User Thread or Non-Daemon Thread')} public static void main (String [] args) {ExampleThread obj = new ExampleThread () obj .start () System.out.println ( 'is'+ obj.getName () + 'a 데몬 스레드 :'+ obj.isDaemon ()) System.out.println ( 'is'+ Thread.currentThread (). getName () + '데몬 스레드 :'+ Thread.currentThread (). isDaemon ())}}

산출: 스레드 -0은 데몬 스레드입니다 : false
사용자 스레드 또는 비 데몬 스레드
주요 데몬 스레드 : false

계속해서 Java의 데몬 스레드에서 다른 메서드를 살펴 보겠습니다.

자바 데몬 스레드의 메소드

Java에서 데몬 스레드에 대한 두 가지 주요 메서드가 있습니다.

행동 양식 기술
public void setDaemon (부울 상태)이 스레드를 데몬 스레드 또는 사용자 스레드 (데몬이 아닌 스레드)로 표시합니다.
공개 부울 isDaemon ()이 스레드가 데몬 스레드인지 여부를 테스트하는 데 사용됩니다. 스레드가 데몬이면 true를 반환하고 그렇지 않으면 false를 반환합니다.
실제 구현을 위해 아래 코드를 고려하십시오.
public class Demothread는 Thread {// Java 프로그램을 확장하여 // setDaemon () 및 isDaemon () 메소드의 사용법을 보여줍니다. public Demothread (String name) {super (name)} public void run () {// Thread가 Daemon인지 아닌지 확인 if (Thread.currentThread (). isDaemon ()) {System.out.println (getName () + 'is Daemon thread')} else {System.out.println (getName () + 'is User thread')}} public static void main (String [] args) {Demothread thread1 = new Demothread ( 'thread1') Demothread thread2 = new Demothread ( 'thread2') Demothread thread3 = new Demothread ( 'thread3') // 사용자 스레드 thread1을 Daemon으로 설정 thread1.setDaemon (true) // 처음 2 개 스레드 시작 thread1.start () thread2.start () / / 사용자 스레드 thread3을 Daemon thread3.setDaemon (true) thread3.start ()로 설정}}

산출:
thread2는 사용자 스레드입니다.
thread1은 데몬 스레드입니다.

이것은 'Java의 데몬 스레드'블로그의 끝입니다. 위에서 논의한 내용이 명확하기를 바랍니다. 내 다음 블로그 읽기의 위에 면접 과정에서 차별화하는 데 도움이 될 상위 75 개의 면접 질문과 답변을 나열했습니다.

이제 Java 컬렉션을 이해 했으므로 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Java 개발자가 되고자하는 학생과 전문가를 위해 설계되었습니다. 이 과정은 Java 프로그래밍을 시작하고 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 '의 코멘트 섹션에서 언급하십시오자바의 데몬 스레드”블로그를 통해 가능한 한 빨리 답변을 드리겠습니다.

C ++에서 goto를 사용하는 방법