스레드, 프로세스, Demon

언젠간·2022년 11월 14일
0

아무거나공부

목록 보기
1/2

데몬이란

  • 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램
  • 시스템 로그를 남기는 syslogd처럼 보통 데몬을 뜻하는 'd'를 이름 끝에 달고 있으며, 일반적으로 프로세스로 실행된다

위키피디아 - 데몬
https://ko.wikipedia.org/wiki/%EB%8D%B0%EB%AA%AC_(%EC%BB%B4%ED%93%A8%ED%8C%85)

프로세스란

  • 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
  • 스케줄링의 대상이 되는 작업(task)이라는 용어와 같은 의미

위키피디아 - 프로세스
https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4

Main 스레드

  • Main 메소드도 하나의 스레드를 갖는다(Main Thread)
  • 메인 스레드는 프로그램이 시작하면 가장 먼저 실행되는 스레드이다
  • 모든 스레드는 메인 스레드로부터 생성된다

데몬 스레드

  • Main 스레드의 하위 스레드로, Main 스레드가 종료되면 데몬 스레드도 종료된다
  • 스레드 시작 전, setDemon(true)로 데몬 스레드를 지정한다

데몬과 프로세스의 차이

  • 프로세스

    • Eclipse.exe 프로그램을 수동으로 실행시키면 Eclipse.exe는 메모리에 할당됨
    • CPU가 프로그램을 메로리로 이동시켜 별도의 실행 오브젝트로 만든 상태
  • 데몬

    • 항상 떠 있는 프로세스(죽지 않는다)
    • 주로 OS가 기동 될 때 자동으로 실행

데몬 스레드 테스트

	public class ThreadTest {
	
	public static void main(String[] args) {
		
		MainThread mainThread = new MainThread();
		DemonThread demonThread = new DemonThread();
		
		demonThread.setDaemon(true);
		
		mainThread.start();
		demonThread.start();
		}
	}

  class MainThread extends Thread{

      @Override
      public void run() {
          for (int i = 1; i <= 3; i++) {
              System.out.println("나는 메인 스레드 " + i);
          }
      }
  }

  class DemonThread extends Thread{

      int cnt = 1;
      @Override
      public void run() {
          while(true) {
              System.out.println("나는 데몬 스레드 " + cnt);
              cnt++;
          }
      }
}

결과 및 해석

  • DemonThread는 while(true)이므로 무한 실행되어야 하지만, Main 스레드가 종료되었기 때문에 DemonThread도 같이 종료되었음
profile
코딩왕이될사나이

0개의 댓글