Skip to content

2. Terminate Thread

dami0806 edited this page Jan 26, 2025 · 1 revision

블로킹 작업과 인터럽트 처리 실험

대기 상태 또는 블록 상태일 경우 catch문에 InterruptedException를 처리해야 Thread.interrupt();에 응답이 됩니다.

1. Blocking Thread

image

2. LongComputaionTask

image

3. Deamon Thread

메인 스레드가 너무 빨리 종료되면 데몬 스레드가 실행될 시간이 부족할 수도 있었다

  1. Thread.sleep(100) // 메인 스레드가 잠시 멈춰 새로운 스레드가 실행될 시간부여
  2. LongComputaionTread에서 setDeamon(true);추가
image

JAVA 애플리케이션 종료 조건

JVM종료조건:

  • 모든 일반스레드가 종료되면 JVM이 종료됩니다.
  • 데몬 스레드(Daemon Thread) 만 남아 있다면 JVM은 자동으로 애플리케이션을 종료합니다.

일반 스레드와 데몬 스레드의 JVM종료에 대한 차이

일반 스레드(User Thread):

  • 애플리케이션의 주요 작업을 담당합니다.
  • 일반 스레드가 남아 있는 한 JVM은 종료되지 않습니다.

데몬 스레드(Daemon Thread):

  • JVM의 백그라운드에서 동작하는 보조 작업을 수행합니다(로그 수집, 메모리 정리, 스케줄링을 통한 임시저장).
  • 모든 일반 스레드가 종료되면, JVM은 남아 있는 데몬 스레드를 강제로 종료합니다.