본문 바로가기

혼공단/혼공자1기

[혼공 학습단 1기] 4주차 미션 550쪽 [직접 해보는 손코딩] 코딩 과정 및 실행 결과 인증샷

반응형

1초 주기로 save()메소드를 호출하는 데몬 스레드

 

메인스레드가 실행하는 코드

 

*책의 실행 결과는 (책의 실행결과 잘못 된듯 책처럼 나오려면 sleep를 3000->4000으로변경해야함)

작업 내용을 저장함.

작업 내용을 저장함.

작업 내용을 저장함.

메인 스레드 종료

 

  • 프로세스 : 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션이 실행되는데, 이것을 프로세스라고 합니다.
  • 멀티 스레드 : 하나의 프로세스 내에 동시 실행을 하는 스레드들이 2개 이상인 경우를 말합니다.
  • 메인 스레드 : 자바의 모든 애플리케이션은 메인 스레드가 main() 메소드를 실행하면서 시작합니다. 메인 스레드는 main() 메소드의 첫 코드부터 아래로 순차적으로 실행하고,  main() 메소드의 마지막 코드를 실행하거나 return문을 만나면 실행이 종료됩니다.
  • 작업 스레드 : 메인 작업 이외에 병렬 작업의 수만큼 생성하는 스레드를 말합니다. 작업 스레드도 객체로 생성되기 때문에 클래스가 필요합니다. Thread 클래스를 직접 객체화해서 생성할 수도 있고, Thread 클래스를 상속해서 하위 클래스를 만들어 생성할 수도 있습니다.
  • 동기화 메소드 : 멀티 스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드 영역을 임계 영역 이라고 합니다. 자바는 임계 영역을 지정하기 위해 동기화 메소드를 제공합니다. 스레드가 객체 내부의 동기화 메소드를 실행하면 즉시 객체에 잠금을 걸어 다른 스레드가 동기화 메소드를 실행하지 못하도록 합니다.
  • 스레드 상태 : 스레드를 생성하고 시작하면 스레드는 다양한 상태를 가지게 됩니다. 스레드의 상태는 자동으로 변경될 수도 있고, 코드에 의해서 변경될 수도 있습니다.
  • 일시 정지 : 실행 중인 스레드를 일정 시간 멈추게 하고 싶다면 Thread 클래스의 정적 메소드인 sleep()을 사용하면 됩니다. 다음과 같이 Thread.sleep()메소드를 호출한 스레드는 주어진 시간 동안 일시 정지 상태가 되고, 다시 실행 대기 상태로 돌아갑니다.
  • 안전한 종료 : Thread는 스레드를 즉시 종료하기 위해서 stop() 메소드를 제공하고 있는데, 이 메소드는 deprecated되었습니다. 그 이유는 stop() 메소드 스레드를 갑자기 종료하게 되면 스레드가 사용중이던 자원들이 불안전한 상태로 남겨지기 때문입니다. 스레드를 안전하게 종료하기 위해서 stop 플래그를 이용하거나 interrupt()메소드를 이용하는 방법이 있습니다.
  • 데몬 스레드 : 주 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드입니다. 주 스레드가 종료되면 데몬 스레드는 강제적으로 장동 종료되는데, 주 스레드의 보조 역할을 수행하므로 주 스레드가 종료되면 데몬 스레드의 존재 의미가 사라지기 때문입니다.

선택미션 539쪽 2번 문제 풀이

 

반응형