Thread 실행제어와 상태

2022. 11. 7. 14:13·CS 이론
728x90

Thread의 상태는 6가지(NEW, RUNNABLE, BLOCKED, WAITING, TIME_WATING, TERMINATED)로 나뉘어진다.

그 중에서 중요하게 봐야할 상태는 WAITING, BLOCKED, RUNNABLE 상태이다.

 

이 3가지 상태를 제어하는 Thread상태 제어 메서드는

위의 표에 적힌 메서드들이 있다.

 

가장 먼저 sleep() 메서드를 먼저 살펴보면, sleep은 현재 진행중인 쓰레드를 일정시간동안 정지시키는 메서드이다.

이 메서드는 interrupt()메서드와 떨어질 수 없는 관계이기 때문에 interrupt()메서드가 호출 될 경우를 필수예외로 처리해야 한다.

sleep()메서드를 사용하면서 중요하게 생각할 것은 sleep()메서드는 static메서드라는 것입니다.

static메서드이기 때문에 현재의 쓰레드 외에 특정 쓰레드를 지정하여 메소드를 호출 할 수 없습니다.

 

 

그럼 이제 sleep()과 뗄 수 없는 메서드인 interrupt메서드를 정리 해보겠습니다.

interrupted상태와 관련된 메서드는 3가지가 있습니다.

위에서 얘기 했던 interrupt()는 Thread의 interrupted상태를 true로 변경해주는 메서드입니다.

그리고 boolean타입의 isInterrupted()는 Thread의 interrupted상태를 확인하고 반환합니다.

다음으로 isinterrupted()와 비슷한 메서드인 interrupted()는 현재 Thread의 interrupted상태를 반환하고, false로 초기화합니다.

 

 

sleep()은 RUNNABLE상태에서 WAITING상태로 만들고, interrupt()는 WAITING상태를 RUNNABLE상태로 만들어 줍니다.

 

 

다음으로 join은 지정된 시간동안 특정 쓰레드가 작업하는 것을 기다린다. 즉, sleep()과는 다르게 특정 쓰레드를 지정할 수 있다는 것입니다.

join을 사용하는 이유를 간단한 예, 메인 쓰레드에서 다른 쓰레드들을 실행했다고 했을 때 메인 쓰레드에서 이 쓰레드들의 결과를 출력하려고 한다. 이 상황에서 join을 사용하지 않으면 어떻게 될지 생각해보면 간단합니다.

실행결과는 메인 쓰레드가 다른 쓰레드들의 결과 값을 못받거나 중간값만을 받고 먼저 종료될 것입니다.

그렇기 때문에 다른 쓰레드들이 끝날때까지 기다렸다가 결과를 출력하고 끝나는 것입니다.

sleep과 마찬가지로 join 또한 InterruptedException을 처리해줘야합니다.

 

stop,suspend,resume은 deprecated처리 되었음으로 사용하지 않는게 좋다.

 

마지막으로 yield()는 자신(현재 Thread)은 실행대기 상태로 돌아가고 다음 Thread에게 넘기는 것이다.

 

728x90

'CS 이론' 카테고리의 다른 글

객체지향과 캡슐화  (0) 2023.05.02
SOLID 원칙이란?  (1) 2023.04.12
네트워킹 이해하기  (0) 2022.12.05
자바의 입출력(I/O)  (0) 2022.11.12
프로세스와 프로세서, 쓰레드 개념알기  (0) 2022.10.30
'CS 이론' 카테고리의 다른 글
  • SOLID 원칙이란?
  • 네트워킹 이해하기
  • 자바의 입출력(I/O)
  • 프로세스와 프로세서, 쓰레드 개념알기
Bello's
Bello's
개발하는 벨로
  • Bello's
    벨로의 개발일지
    Bello's
  • 전체
    오늘
    어제
    • 분류 전체보기 (199) N
      • 노예 일지 (7)
        • 스타트업 노예일지 (3)
      • CS 이론 (81)
        • 학과 수업 (4)
        • 알고리즘 (64)
        • 시스템 프로그래밍 (3)
        • 데이터 통신 (1)
        • 운영체제 (2)
        • 데이터베이스 (1)
      • project (3)
      • 나는 감자다. (4)
      • Spring (27)
      • 모각코 (45)
        • 절개와지조(모각코) (7)
        • 어쩌다보니 박준태가 조장이조 (11)
        • 어쩌다보니 박준태가 또 조장이조 (12)
      • LikeLion🦁 (20)
      • 캘리포니아 감자 (4)
      • OpenSource Contribute (1)
      • 우아한테크벨로 (1) N
        • 프리코스 회고록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    어렵다
    DFS
    프리코스
    JPA
    타임리프
    회고록
    모각코
    티스토리챌린지
    감자
    백준
    8기
    자바
    뛰슈
    나는 감자
    절개와지조
    Spring
    그래프 순회
    오블완
    BFS
    누적합
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Bello's
Thread 실행제어와 상태
상단으로

티스토리툴바