반응형
[ ] 자바의 정석 기초편 카테고리
chapter 13 쓰레드
chapter 13-19 데몬 쓰레드(daemon thread) 예제
예제 13-7
[ ] 코드 분석
1. 원본 코드
class Ex13_7 implements Runnable {
static boolean autoSave = false;
public static void main(String[] args) {
Thread t = new Thread(new Ex13_7());
t.setDaemon(true); // 이 부분이 없으면 종료되지 않는다.
t.start();
for(int i=1; i <=10; i++) {
try{
Thread.sleep(1000);
} catch(InterruptedException e) {}
System.out.println(i);
if(i==5) autoSave = true;
}
System.out.println("프로그램을 종료합니다.");
}
public void run() {
while(true) {
try {
Thread.sleep(3 * 1000); // 3초마다
} catch(InterruptedException e) {}
// autoSave의 값이 true이면 autoSave()를 호출한다.
if(autoSave) autoSave();
}
}
public void autoSave() {
System.out.println("작업파일이 자동저장되었습니다.");
}
}
2. 해석본
class Ex13_7 implements Runnable {
// Runnable 클래스 상속 Ex13_7 클래스 선언
static boolean autoSave = false;
// boolean 형 정적 변수 autoSave 선언
public static void main(String[] args) {
// 접근제어자 public으로 메모리에 상주하게 리턴값이 없이 main 메서드 선언
Thread t = new Thread(new Ex13_7());
// Thread 클래스의 인스턴스 t 선언
t.setDaemon(true); // 이 부분이 없으면 종료되지 않는다.
t.start();
// 인스턴스 t의 메서드 start() 사용
for(int i=1; i <=10; i++) {
// for문 선언
try{
Thread.sleep(1000);
} catch(InterruptedException e) {}
System.out.println(i);
if(i==5) autoSave = true;
// if문 선언
}
System.out.println("프로그램을 종료합니다.");
// 프로그램을 종료합니다. 출력
}
public void run() {
// 접근제어자 public으로 리턴값이 없이 run() 함수 선언
while(true) {
try {
Thread.sleep(3 * 1000); // 3초마다
} catch(InterruptedException e) {}
// autoSave의 값이 true이면 autoSave()를 호출한다.
if(autoSave) autoSave();
}
}
public void autoSave() {
// 접근제어자 public으로
System.out.println("작업파일이 자동저장되었습니다.");
// 작업파일이 자동저장되었습니다. 출력
}
}
반응형
'프로그래밍 > 자바의 정석 기초편 코드 분석' 카테고리의 다른 글
자바의 정석 기초편 코드 분석 133(예제 13-9) (0) | 2023.09.25 |
---|---|
자바의 정석 기초편 코드 분석 132(예제 13-8) (0) | 2023.09.25 |
자바의 정석 기초편 코드 분석 130(예제 13-6) (0) | 2023.09.25 |
자바의 정석 기초편 코드 분석 129(예제 13-5) (0) | 2023.09.25 |
자바의 정석 기초편 코드 분석 128(예제 13-4) (0) | 2023.09.25 |