반응형
[ ] 자바의 정석 기초편 카테고리
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("카운트가 종료되었습니다.");
}
}
반응형
'프로그래밍 > 자바의 정석 기초편 코드 분석' 카테고리의 다른 글
자바의 정석 기초편 코드 분석 135(예제 13-11) (0) | 2023.09.26 |
---|---|
자바의 정석 기초편 코드 분석 134(예제 13-10) (0) | 2023.09.26 |
자바의 정석 기초편 코드 분석 132(예제 13-8) (0) | 2023.09.25 |
자바의 정석 기초편 코드 분석 131(예제 13-7) (0) | 2023.09.25 |
자바의 정석 기초편 코드 분석 130(예제 13-6) (0) | 2023.09.25 |