자바 스레드

Sarah·2022년 4월 15일
0

JAVA

목록 보기
2/3

자바스레드 분류

  • 데몬 스레드(Daemon)
  • 일반 스레드

데몬 스레드
일반 스레드가 모두 종료할 경우 사라지는 스레드
즉, 일반 스레드가 하나 이상 존재할 경우 JVM은 종료 x
일반 스레드 모두 종료한 경우 JVM 종료 o(데몬스레드가 동작중이여도)

개발자가 스레드를 생성하면 기본이 일반스레드이고
속성변경을 통해 데몬 스레드로 변경 가능하다.

Thread t = new Thread(new MyRunnable()); 
t.setDaemon(true); 
t.start();

기본적으로 수행되는 자바 스레드의 각 역할

스레드 상태 확인

 State s = t.getState();

스레드 상태

  1. NEW
    새롭게 생성된 스레드 / 앚기 시작되지 않은 상태(Thread.start()호출 전)

  2. RUNNABLE
    cpu를 점유하여 동작 할 수 있는 상태

  • Running
    cpu를 점유하여 이미 동작하고 있는 상태
  • Runnable
    cpu를 할당 받기 위해서 대기하고 있는 상태
  1. BLOCKED
    객체의 모니터를 획득하기 위해서 대기하는 상태 + Object.wait()때의 상태도 포함

  2. WAITING
    다른 스레드의 의해 생성된 이벤트를 대기하는 상태

  • Object.wait() : notify(), notifyAll() 호출할 때까지 대기
  • Thread.join() : 다른스레드 종료될 때까지 대기
  • LockSupport.park() : unpark()를 호출할 때까지 대기
  1. TIMED_WAITING
    스레드가 지정된 시간까지 대기하고 있는 상태
    아래에 의해 발생
  • Thread.sleep(timeout)
  • Object.wait(timecout)
  • Thread.join(timeout)
  • LockSupport.parkNano(nanos)
  • LockSupport.parkUtill(deadline)
  1. TERMINATED
    스레드 메인 함수가 완료된 상태
    (의도대로 종료 / 예외나 에러에 의해 종료)

출처: https://bestugi.tistory.com/38 [Question Mark]

profile
2021.06 ~

0개의 댓글