옝옹
냠
옝옹
전체 방문자
오늘
어제
  • 분류 전체보기 (84)
    • [LG유플러스]유레카 SW (5)
    • React (20)
    • JS (17)
    • TypeScript (5)
    • CSS & HTML (1)
    • 알고리즘 (11)
    • JAVA (20)
    • GIT (1)
    • 자격증 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • useCallback
  • 변수선언
  • 기본api클래스
  • 인스턴스멤버
  • 정적멤버
  • switch문
  • 노마드코더
  • 코드스플리팅
  • match()
  • ==
  • toFixed
  • Node.js
  • sort() 메서드
  • 타입스크립트
  • useState
  • java.lang패키지
  • template literal
  • join() 메서드
  • reverse() 메서드
  • 자바스크립트
  • break문
  • useRef
  • While문
  • 혼자공부하는자바
  • 자바
  • map
  • useMemo
  • reduce
  • JavaScript
  • 백준
  • java
  • map() 함수
  • 템플릿리터럴
  • 리액트
  • 혼자 공부하는 자바
  • do-while문
  • useEffect
  • join()
  • 접근제한자
  • 타입변환
  • 리액트를다루는기술
  • 자바스트립트
  • continue문
  • indexOf()
  • js
  • 화살표함수
  • fillter
  • 함수선언
  • TypeScript
  • java.util패키지

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
옝옹

냠

스레드 제어
JAVA

스레드 제어

2022. 12. 5. 17:15

스레드 상태

  • 스레드를 생성하고 시작하면 스레드는 다양한 상태를 가지게 된다.
  • 스레드의 상태는 자동으로 변경될 수도 있고, 코드에 의해서 변경될 수도 있음.
  • 실행 상태 : 실행 대기 상태에 있는 스레드 중에서 운영체제는 하나의 스레드를 선택하고 CPU가 run() 메소드를 실행하게함
  • 종료 상태 : 실행 상태에서 run() 메소드가 종료되면, 더 이상 실행할 코드가 없기 때문에 스레드의 실행은 멈추게 됨

스레드 상태 제어

  • 실행중인 스레드의 상태를 변경하는 것

일시 정지

  • 실행 중인 스레드를 일정 시간 멈추게 하고 싶다면 Thread 클래스의 정적 메소드인 sleep()을 사용
  • 다음과 같이 Thread.sleepO 메소드를 호출한 스레드는 주어진 시간 동안 일시 정지 상태가 되고, 다시 실행 대기 상태로 돌아간다.

안전한 종료

  • Thread는 스레드를 즉시 종료하기 위해서 stop() 메소드를 제공하고 있는데, 이 메소드는 deprecated(중요도가 떨어져 이제 사용되지 않음)되었음
    • stop() 메소드로 스레드를 갑자기 종료하게 되면 스레드가 사용 중이던 자원들이 불안전한 상태로 남겨지기 때문
  • 스레드를 안전하게 종료하기 위해서 stop 플래그를 이용하거나 interrupt() 메소드를 이용하는 방법이 있음.
    • stop 플래그 이용하는 방법

  • interrupt() 메소드 이용 방법
    • 스레드가 일시 정지 상태에 있을 때  InterruptdException을 발생시키는 역할

데몬 스레드

  • 주 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드
  • 주 스레드가 종료되면 데몬 스레드는 강제적으로 자동 종료됨
    • 주 스레드의 보조 역할을 수행하므로 주스레드가 종료되면 데몬 스레드의 존재 의미가 사라지기 때문

 

확인 문제

3. interrupt() 메소드는 실행 상태를 간섭해서 일시 정지 상태로 만들어준다.

2. 스레드는 즉시 종료한다.

package sec02.verify.exam03;

public class MovieThread extends Thread { 
    @Override 
    public void run() { 
    	while(true) {
    		System.out.println("동영상을 재생합니다.");
    		if(this.islnterrupted()) {
    		break;
    		}
    	}
    }
}

thread.setDaemon(true);

1. stop() 메소드를 호출해서 즉시 종료시킨다.

저작자표시 비영리 변경금지 (새창열림)

'JAVA' 카테고리의 다른 글

멀티 스레드  (0) 2022.12.05
java.util 패키지  (0) 2022.11.30
java.lang 패키지  (3) 2022.11.30
익명 객체  (0) 2022.11.15
중첩 클래스와 중첩 인터페이스  (2) 2022.11.15
    'JAVA' 카테고리의 다른 글
    • 멀티 스레드
    • java.util 패키지
    • java.lang 패키지
    • 익명 객체
    옝옹
    옝옹

    티스토리툴바