Java

Java Thread 기초

Yukart 2022. 2. 4. 10:13
반응형

스레드 관리 정보

 

데몬 스레드

JVM이 스스로 필요에 의해 사용하는 스레드이다. 대표적인 예로 GC가 있다.

내가 작성한 스레드도 데몬 스레드로 표시하여 JVM이 인식하게 할 수도 있다.

일반 스레드가 모두 종료되면 데몬 스레드가 살아 있더라도 프로그램은 종료된다.

 

스레드 상태

  • NEW

스레드가 생성되었지만 아직 실행할 준비가 되지 않은 상태이다. start() 메소드가 호출되면 RUNNABLE 상태가 된다.

  • RUNNABLE

스레드가 현재 실행되고 있거나 실행 준비되어 스케줄링을 기다리는 상태이다.

  • WAITING

스레드가 어떤 Object 타입의 객체 a에 대해 a.wait()을 호출하고 무한 대기하면서 다른 스레드가 a.notify(), a.notifyAll()을 불러주기를 기다리고 있는 상태이다. 스레드 동기화를 위해 사용된다.

  • TIMED_WAITING

스레드가 sleep(int n) 을 호출하여 n밀리초 동안 잠을 자고 있는 상태이다.

  • BLOCK

스레드가 I/O 작업을 요청하여 I/O 작업이 완료되기를 기다리는 상태이다.

  • TERMINATED

스레드가 종료한 상태이다. 더이상 다른 상태로 바뀔 수 없다.

 

참고

만일 실행중인 스레드의 코드에 yield()를 호출하는 부분이 있다면 이는 다른 스레드에게 양보하겠다는 의미이며 JVM은 해당 스레드를 RUNNALBE 상태로 변경시키고 다시 스레드 스케줄링을 실시한다.

반응형

'Java' 카테고리의 다른 글

WAS란 그리고 그 종류들  (0) 2022.06.20
JAVA 자주 까먹는 것들  (0) 2022.02.25
java 자주 발생하는 예외  (0) 2022.02.04
Java 메모리 영역(Static, Stack, Heap)  (0) 2022.01.11
Java Servlet이란  (0) 2022.01.11