JAVA

[Thread] suspend(), resume(), stop()

2023. 2. 27. 13:47
목차
  1. suspend(), resume(), stop()

suspend(), resume(), stop()

스레드의 실행을 일시정지, 재개, 완전정지 시킨다.

void suspend()	스레드를 일시정지 시킨다.
void resume()	suspend()에 의해 일시정지된 스레드를 실행대기상태로 만든다.
void stop()	스레드를 즉시 종료시킨다.

위 메서드들은 편리하지만 deprecated(사용을 권장하지 않음) 되었다. 그 이유는 교착상태(dead-lock)를 일으킬 가능성이 있기 때문이다.

 

 class ThreadEx15 {
	public static void main(String args[]) {
		MyThread th1 = new MyThread("*");
		MyThread th2 = new MyThread("**");
		MyThread th3 = new MyThread("***");

		th1.start();
		th2.start();
		th3.start();

		try {
			Thread.sleep(2000);
			th1.suspend();	// 쓰레드 th1을 잠시 중단시킨다.
			Thread.sleep(2000);
			th2.suspend();
			Thread.sleep(3000);
			th1.resume();	// 쓰레드 th1이 다시 동작하도록 한다.
			Thread.sleep(3000);
			th1.stop();		// 쓰레드 th1을 강제종료시킨다.
			th2.stop();
			Thread.sleep(2000);
			th3.stop();
		} catch (InterruptedException e) {}
	} // main
}

class MyThread implements Runnable {
        volatile boolean suspended = false;	// volatile 쉽게 바뀌는 변수
        volatile boolean stopped = false;

        Thread th;

        MyThread(String name) {
            th = new Thread(this, name);	// Thread(Runnable r, String name)
        }

        void start() {
            th.start();
        }

        void stop() {
            stopped = true;
        }

        void suspend() {
            suspended = true;
        }

        void resume() {
            suspended = false;
        }

        public void run() {
            while(!stopped) {
            	if(!suspended) {
                    System.out.println(Thread.currentThread().getName());
                    try {
                        Thread.sleep(1000);
                    } catch(InterruptedException e) {}
                }
            }
        } // run()
}

'JAVA' 카테고리의 다른 글

[Thread] 스레드의 동기화 - synchronized  (0) 2023.02.27
[Thread] join(), yield()  (0) 2023.02.27
[Thread] sleep(), interrupt()와 interrupted()  (0) 2023.02.26
[Thread] 데몬 스레드, 스레드의 상태  (0) 2023.02.26
[Thread] 스레드의 우선순위  (0) 2023.02.26
  1. suspend(), resume(), stop()
'JAVA' 카테고리의 다른 글
  • [Thread] 스레드의 동기화 - synchronized
  • [Thread] join(), yield()
  • [Thread] sleep(), interrupt()와 interrupted()
  • [Thread] 데몬 스레드, 스레드의 상태
ewok
ewok
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 노랭이
  • 버전 관리
  • GIT
  • sqld 자격증
  • git bash
  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • branch
  • 브랜치
  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • merge commit
  • 생성자
  • this
  • sqld 합격
  • SQLD
  • base

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
[Thread] suspend(), resume(), stop()
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.