Skip to content

김민주 6주차 JSP CAFE 학습 일지

Kim Minju edited this page Aug 11, 2024 · 1 revision

데몬 스레드

스레드는 user 스레드와 daemon 스레드 2가지 종류로 구분할 수 있다.

사용자 스레드

  • 비즈니스 로직을 수행하는 스레드
  • 끝날때까지 실행? (중간에 종료되지 않는다는 뜻인지?)
  • main 스레드니깐, 모든 스레드가 종료되면 JVM도 종료됨
  • 스레드 풀이 있으면, 어떻게 되는지?
    • 모든 사용자 스레드가 종료될 때까지 실행을 계속하게 됨

nohup과 데몬 프로세스 간의 차이점은?

nohup도 결국 systemd or init 하위로 동작시키게 하는 개념인데 데몬 프로세스랑 어떤 차이가 있을까?

  • docker-compose up -d로 실행하면 systemd or init의 자식 프로세스로 만듦

  • nohup으로 만들면 특이하게 SIGHUP 신호를 무시시키는 프로세스를 현재 쉘 자식으로 만듦

    • 쉘을 종료시키더라도 SIGHUP신호를 무시하기 때문에 고아 프로세스가 되고, 이는 init or systemd 를 부모로 가지게 됨
  • 공통점은 둘 다 결국 init or systemd의 자식 프로세스가 된다는 것

좀비 vs 고아?

여기서 좀비 프로세스와 고아 프로세스의 차이는 구체적으로 어떤게 있을까?

  • 고아는 부모가 종료된 거
    • 따라서 init 또는 systemd에서 관리
  • 좀비는 본인이 종료됐는데, 부모가 종료됐다고 수집하지 않은 상태
    • wait()이나 waitpid()로 종료 상태를 수집해야함

데몬 스레드

  • 백그라운드에서 보조적인 작업이라는데 어떤 예시가 잇을까?
  • 얘는 user가 종료되면 같이 종료돼버리면서 JVM도 종료됨

Thread vs Runnable

Thread를 만들 떄 Runnable로 작업을 정의해서 넣는데, 이건

작업과 스레드를 분리하는 것

Thread에 runnable을 외부에서 주입하여 수행하는 것

Runnable을 써야하는 이유는

  • Thread는 다중 상속이 안 되고
  • Thread는 유연하지 않음 (작업이 내부에 정의되어있음)

👼 개인 활동을 기록합시다.

개인 활동 페이지

🧑‍🧑‍🧒‍🧒 그룹 활동을 기록합시다.

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally