본문 바로가기
프로그래밍/자바의 정석 기초편 코드 분석

자바의 정석 기초편 코드 분석 134(예제 13-10)

by 리드민 2023. 9. 26.
반응형

[ ] 자바의 정석 기초편 카테고리
chapter 13 쓰레드
chapter 13-27 suspend(), resume(), stop() 예제
예제 13-10

[ ] 코드 분석
1. 원본 코드

class Ex13_10 {
	public static void main(String args[]) {
    	RunImplEx10 r = new RunImplEx10();
        Thread th1 = new Thread(r, "*");
        Thread th2 = new Thread(r, "**");
        Thread th3 = new Thread(r, "***");
        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 RunImplEx10 implements Runnable {
	public void run() {
    	while(true) {
        	System.out.println(Thread.currentThread().getName());
            try {
            	Thread.sleep(1000);
            } catch(InterruptedException e) {}
        }
    } // run()
}


2. 해석본

class Ex13_10 {
	public static void main(String args[]) {
    	RunImplEx10 r = new RunImplEx10();
        // RunInplEx10 클래스의 인스턴스 r 선언
        Thread th1 = new Thread(r, "*");
        Thread th2 = new Thread(r, "**");
        Thread th3 = new Thread(r, "***");
        th1.start();
        // 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 RunImplEx10 implements Runnable {
// Runnable 클래스를 상속하는 RunImpleEx10 클래스 선언
	public void run() {
	// 접근제어자 public으로 리턴값이 없이 run() 함수 선언
    	while(true) {
        // while문 선언
        	System.out.println(Thread.currentThread().getName());
            try {
            	Thread.sleep(1000);
            } catch(InterruptedException e) {}
        }
    } // run()
}
반응형