☕️ [Java] 비동기 처리: 데몬 스레드(Daemon Thread)

이서·2023년 9월 27일
0

☕️ Java 트랙

목록 보기
3/3

🏎️💨 안녕하세요 이서에요. 이번 포스팅에서는 데몬 스레드에 대해서 포스팅 하려 해요😆.

개요

자바(Java)에서 데몬 스레드(Daemon Thread)는 일반 스레드와는 다른 특성을 가지는 스레드에요. 데몬 스레드는 백그라운드에서 동작하며, 주로 서비스 스레드의 보조 역할을 수행하거나 특정 작업을 주기적으로 처리하기 위한 목적으로 사용해요. 이러한 데몬 스레드는 프로그램이 종료될 때 자동으로 종료되며, 명시적으로 종료시키지 않아도 돼요.

주요 특징

  1. 백그라운드 실행: 데몬 스레드는 백그라운드에서 동작하며 주로 애플리케이션의 주요 동작에 영향을 미치지 않고 보조적인 작업을 처리해요
  2. 자동 종료: 데몬 스레드는 주 스레드(메인 스레드)가 종료될 때 자동으로 종료돼요. 따라서 명시적으로 종료시키지 않아도 돼요.
  3. setDaemon 메서드: 스레드 객체를 생성한 후, setDaemon(true) 메서드를 호출하여 해당 스레드를 데몬 스레드로 설정할 수 있어요.
Thread daemonThread = new Thread(() -> {
	while (true) {
		// 주기적인 작업 수행
        // ...
	}
});
daemonThread.setDaemon(true); // 데몬 스레드로 설정
daemonThread.start(); // 스레드 시작
    

테스트

System.out.println(Thread.currentThread().getName() + " Thread 시작");
Thread daemonThread = new Thread(() -> {
	try {
		System.out.println(Thread.currentThread().getName() + " Thread 시작");
		Thread.sleep(5000);
		System.out.println(Thread.currentThread().getName() + " Thread 종료");
	} catch (InterruptedException e) {
		throw new RuntimeException(e);
	}
}, "MyThread");
daemonThread.setDaemon(true);
daemonThread.start();
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName() + " Thread 종료");
main Thread 시작
MyThread 시작
main Thread 종료
// MyThread 종료 메시지 출력이 안되었어요.

주 사용 사례

  • 주기적인 로그 기록
  • 자동 저장 및 백업
  • 네트워크 리스너 (포트를 모니터링하며 연결 요청 처리)
  • Garbage Collection 등의 백그라운드 작업

마무리

데몬 스레드는 백그라운드에서 동작하여 주 스레드(main 스레드)를 보조하거나 특정 작업을 처리하는 유용한 개념이에요. 하지만 주의를 기울여야 할 점도 많아요. 메인 스레드가 종료되면 데몬 스레드도 함께 종료되므로 종료 조건을 명확히 설정해야 해요. 스레드 간의 안전성과 동기화 문제도 고려해야 할 거에요. 올바른 용도와 적절한 사용으로 데몬 스레드는 성능 향상과 백그라운드 작업 관리를 효율적으로 수행할 수 있어요. 데몬 스레드에 대한 개념을 잘 숙지하여 효율적이고 성능적으로 우수한 애플리케이션을 만드시길 바라요😎.



참고자료
ThreadGroup (Java Platform SE 8 )
profile
🏎️💨 Beep Beep

0개의 댓글