Java의 데몬 스레드와 데몬이 아닌 스레드의 분석 예
이 글은 주로 Java의 데몬 스레드와 비데몬 스레드에 대한 간략한 논의를 소개합니다. 편집자는 그것이 꽤 좋다고 생각하므로 이제 공유하고 참고용으로 제공하겠습니다. 편집기를 따라 살펴보겠습니다
최근 Java에 대한 기본 지식을 다시 연구한 결과 과거에는 너무 많은 지식이 약간 무시되었다는 것을 발견했습니다. Java의 스레드 메커니즘을 비교하면 Java에는 두 가지 유형의 스레드가 있습니다. 사용자 스레드(사용자) 스레드), 데몬 스레드(데몬 스레드), (PS: 이전에는 무시됨).
유닉스 개발을 공부했지만 자바를 자세히 공부하지 않은 학생들은 혼란스러울 것으로 추정된다. 운영체제에는 데몬 스레드라는 개념이 없고 데몬 프로세스만 있을 뿐 자바 언어 메커니즘은 JVM은 Java 플랫폼이 운영 체제의 최하위 계층을 보호하므로 자체 가상 플랫폼에서 자체적으로 유익한 메커니즘을 구성할 수 있으며 언어 또는 플랫폼 설계자는 Unix에서 어느 정도 영감을 얻었음을 의미합니다. Impact, 데몬 스레드 메커니즘은 JVM과 같은 플랫폼에 적합하므로 데몬 스레드가 탄생했습니다.
데몬의 역할은 GC 스레드와 같은 다른 스레드의 실행을 위한 서비스를 제공하는 것입니다. 실제로 사용자 스레드 스레드와 데몬 스레드 데몬 스레드 간에는 본질적으로 차이가 없습니다. 유일한 차이점은 가상 머신의 출발입니다. 모든 사용자 스레드가 제거되면 데몬 스레드에는 서비스할 스레드가 없으므로 가상 머신은 또한 종료됩니다.
데몬 스레드는 가상 머신 내부에서 제공되지 않습니다. 사용자가 직접 데몬 스레드를 설정할 수도 있습니다. 방법은 다음과 같습니다: public final void setDaemon(boolean on) 그러나 주의할 점이 있습니다:
1) thread.setDaemon(true) thread.start() 전에 설정해야 합니다. 그렇지 않으면 IllegalThreadStateException이 발생합니다. 실행 중인 일반 스레드를 데몬 스레드로 설정할 수 없습니다. (참고: 이는 데몬 프로세스와 분명히 다릅니다. 데몬 프로세스가 생성된 후 프로세스가 원래 세션의 제어권을 제거하고 프로세스가 원래 프로세스 그룹의 제어권을 제거하고 프로세스가 원래 제어 터미널의 제어를 제거하여 가상에 배치합니다. 기계의 언어 메커니즘은 본질적으로 시스템 수준 언어와 다릅니다.
2) 데몬 스레드에서 생성된 새 스레드도 데몬의 것입니다. (이것은 본질적인 차이점입니다. 데몬 프로세스인 fork()에서 나오는 하위 프로세스는 더 이상 데몬 프로세스가 아닙니다. 상위 프로세스의 프로세스 관련 정보를 복사하지만 하위 프로세스의 상위 프로세스는 하위 프로세스가 아닙니다. init 프로세스. 소위 데몬 프로세스는 본질적으로 "상위 프로세스가 종료되고 init가 이를 채택한 다음 파일 0, 1, 2는 모두 /dev/null이고 현재 디렉터리는 /입니다."를 의미합니다.
3) 읽기 및 쓰기 작업이나 계산 논리와 같은 서비스를 수행하기 위해 모든 애플리케이션에 데몬 스레드를 할당할 수 있는 것은 아닙니다. 데몬 스레드가 작업을 수행하기 전에 가상 머신이 종료되었을 수 있기 때문입니다.
예:
//完成文件输出的守护线程任务 import java.io.*; class TestRunnable implements Runnable{ public void run(){ try{ Thread.sleep(1000);//守护线程阻塞1秒后运行 File f=new File("daemon.txt"); FileOutputStream os=new FileOutputStream(f,true); os.write("daemon".getBytes()); } catch(IOException e1){ e1.printStackTrace(); } catch(InterruptedException e2){ e2.printStackTrace(); } } } public class TestDemo2{ public static void main(String[] args) throws InterruptedException { Runnable tr=new TestRunnable(); Thread thread=new Thread(tr); thread.setDaemon(true); //设置守护线程 thread.start(); //开始执行分进程 } }
실행 결과: daemon.txt 파일에 "daemon" 문자열이 없습니다.
하지만 thread.setDaemon(true); //데몬 스레드를 설정하면 daemon.txt 파일을 데몬 문자열에 쓸 수 있습니다
JRE에서 프로그램이 종료되었는지 판단하는 표준은 다음과 같습니다. 모든 프런트 데스크는 백그라운드 스레드의 상태와 관계없이 실행 스레드가 완료되므로 백그라운드 스레드를 사용할 때 이 문제에 주의해야 합니다.
그런데 데몬 스레드의 실제 적용은 어디에 있나요? 예를 들어 웹 서버의 서블릿의 경우 컨테이너가 시작되면 서비스 스레드, 즉 예약 스레드가 백그라운드에서 초기화되어 http 요청 처리를 담당합니다. 그런 다음 예약 스레드는 각 요청에 대해 다음 작업을 수행합니다. 요청을 처리하기 위해 스레드 풀에서 작업자 스레드를 꺼내 동시성 제어 목적을 달성합니다.
이해를 돕기 위해 인터넷에서 가져온 사진:
위 내용은 Java의 데몬 스레드와 데몬이 아닌 스레드의 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java의 난수 생성기 안내. 여기서는 예제를 통해 Java의 함수와 예제를 통해 두 가지 다른 생성기에 대해 설명합니다.

Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

Java의 TimeStamp to Date 안내. 여기서는 소개와 예제와 함께 Java에서 타임스탬프를 날짜로 변환하는 방법에 대해서도 설명합니다.

캡슐은 3 차원 기하학적 그림이며, 양쪽 끝에 실린더와 반구로 구성됩니다. 캡슐의 부피는 실린더의 부피와 양쪽 끝에 반구의 부피를 첨가하여 계산할 수 있습니다. 이 튜토리얼은 다른 방법을 사용하여 Java에서 주어진 캡슐의 부피를 계산하는 방법에 대해 논의합니다. 캡슐 볼륨 공식 캡슐 볼륨에 대한 공식은 다음과 같습니다. 캡슐 부피 = 원통형 볼륨 2 반구 볼륨 안에, R : 반구의 반경. H : 실린더의 높이 (반구 제외). 예 1 입력하다 반경 = 5 단위 높이 = 10 단위 산출 볼륨 = 1570.8 입방 단위 설명하다 공식을 사용하여 볼륨 계산 : 부피 = π × r2 × h (4
