Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

코딩기록

Day - 30 [JAVA] - Multi Thread {Thread State/control (sleep..) , Demon Thread} 본문

study

Day - 30 [JAVA] - Multi Thread {Thread State/control (sleep..) , Demon Thread}

9-99zy 2023. 3. 15. 14:30

Thread State

  • Thread 는 생성부터 종료 까지의 상태 값이 있다.
  • 우리는 getState() 를 통해 현재 상태를 알 수 있다.
  • New, Runnable, Terminated 값 정도만 기본적으로 알고 있자.

더보기

- Timed_Waiting : Thread.sleep(1000); 1초동안(주어진 시간)

- sleep 의 경우를 제외하면 나머지는 Waiting 이다.

 

- Terminated : 스레드가 끝났을 때

 

- Runnable : ex) 휴게소를 들를 때 

 

  • Work thread 에게 일을 시켜 보자
  • 그리고 main thread 가 상태를 감시 하도록 해 보자
  • // 실행할때는 아무것도 뜨지 않는데 쉴때 마다 runnable 이 뜨기 때문에 runnable 이 찍히는것이다.

 


 

Thread Control - sleep

 

  • Thread 는 참 유용한 기능 이지만 예상대로 움직이지 않는다.
  • 그래서 Thread Control 을 위한 method 들이 존재 한다.
1) sleep()

Sleep 은 주어진 milliseconds 동안 thread 를 일시 정지 시킨다.
Thread.sleep(1000) 형식으로 사용 한다.

2) yeild()

Yield 는 특정 스레드 에게 제어권을 양보 한다. => 너도 한번 할 기회를 줄게
Thread.yield() 형식으로 사용 한다.

3) join() = blocking 이라고 부르기도함 의미 비슷

Join 은 다른 thread 의 종료를 기다린 후에 실행 할 때 사용 한다.
Join 을 사용 할 때 와 사용하지 않을 때를 비교 해 보자

 

4) wait(), notify(), notifyAll()

wait() : 스레드를 일시 정지 상태로 만든다.
notify() : 일시 정지 상태중인 스레드 중 하나를 실행 대기 상태로 만든다.
notifyAll() : 일시 정지된 모든 스레드를 실행 대기 상태로 만든다.
  • wait() 은 내가 쉬는것이고
  • notify() 는 누군가를 깨우는 것이다.
  • 아래의 상황은 wait 과 notify 를 실행하는 과정이다.

 

  • wait() 과 notify() 를 이용하여 공동 데이터에 하나의 스레드만 접근 하도록 만들어 보자
  • wait() , notify() , notifyAll() 호출은 synchronized 안에서 해야 한다.

 

요약

  1. Thread 제어를 위한 방법은 여러가지가 있다.
  2. sleep() 은 스스로가 정해진 시간 만큼 쉬는 것이다.
  3. yeild() 는 상대에게 실행 할 기회를 주는 것이다.
  4. join() 은 특정 스레드의 종료를 기다리는 것이다.
  5. wait() 은 누군가가 notify() 해 줄 떄 까지 쉬는 것이다.

 

5) Stop flag, interrupt()
stop -> 갑자기 팍 꺼지기 때문에 while 하위 메서드를 실행 할 수 없기 때문에 권장하지 않는다.

1. stop 쓰면 안된다. stopflag -> while문
2. interrupt -> 트라이 캐치

stop flag() : 
interrupt() :
  • 기본적으로 thread 는 run() 의 실행 내용이 모두 실행 되면 종료 된다.
  • 무한 반복문으로 이루어진 경우는 강제 종료가 필요하다.
  • 이때 stop() 을 사용 할 수 있으나 현재는 사용중지를 권고 하고 있다.

Stop() methos : Pc방 남은 시간  경고 없이 pc 가 꺼진다.

 

 


 

 

Demon Thread

  • Demon Thread 는 main thread 작업을 돕는 보조적인 역할을 수행 한다.
  • Work Thread 와 마찬가지로 main thread 에 의해서 생성 된다.
  • 다만 life cycle 의 차이가 있다.

 

요약

  1. Thread 를 정지시키는 방법은 여러가지가 있다.(stop() 사용 금지)
  2. Demon thread 는 main thread 와 life cycle 을 같이 한다.