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

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

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

[ ] 자바의 정석 기초편 카테고리
chapter 13 쓰레드
chapter 13-25 Interrupt() 예제
예제 13-9

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

import javax.swing.JOptionPane;

class Ex13_9 {
	public static void main(String[] args) throws Exception {
		ThreadEx9_1 th1 = new ThreadEx9_1();
		th1.start();

		String input = JOptionPane.showInputDialog("아무 값이나 입력하세요."); 
		System.out.println("입력하신 값은 " + input + "입니다.");
		th1.interrupt();  // interrupt()를 호출하면, interrupted상태가 true가 된다.
		System.out.println("isInterrupted():"+ th1.isInterrupted()); // true
	}
}

class ThreadEx9_1 extends Thread {
	public void run() {
		int i = 10;

		while(i!=0 && !isInterrupted()) {
			System.out.println(i--);
			for(long x=0;x<2500000000L;x++); // 시간 지연
		}
		System.out.println("카운트가 종료되었습니다.");
	} 
}

 

2. 해석본

import javax.swing.JOptionPane;
// javax.swing.JOptionPane 클래스 선언

class Ex13_9 {
// Ex13_9 클래스 선언
	public static void main(String[] args) throws Exception {
    // 접근제어자 public으로 메모리에 상주하게 리턴값이 없이 main 메서드 선언
		ThreadEx9_1 th1 = new ThreadEx9_1();
        // ThreadEx9_1 클래스의 인스턴스 th1 선언하고 ThreadEx9_1 생성자로 초기화
		th1.start();
        // th1 인스턴스의 메서드 start() 선언

		String input = JOptionPane.showInputDialog("아무 값이나 입력하세요.");
        // String형 변수 input 선언
		System.out.println("입력하신 값은 " + input + "입니다.");
		// 입력하신 값은 " + input + "입니다. 출력
        th1.interrupt();  // interrupt()를 호출하면, interrupted상태가 true가 된다.
		System.out.println("isInterrupted():"+ th1.isInterrupted()); // true
	}
}

class ThreadEx9_1 extends Thread {
// Thread를 상속하는 ThreadEx9_1 클래스 선언
	public void run() {
    // 접근제어자가 public으로 리턴값이 없는 함수 run() 선언
		int i = 10;
		// int형 변수 i 선언
        
		// while문 선언
		while(i!=0 && !isInterrupted()) {
			System.out.println(i--);
			for(long x=0;x<2500000000L;x++); // 시간 지연
		}
		System.out.println("카운트가 종료되었습니다.");
	} 
}
반응형