Java 데몬쓰레드(deomon thread), 쓰레드의 상태
by 볼빵빵오춘기데몬 쓰레드(deomon thread)
- 일반 쓰레드(non-daemon thread)의 작업을 돕는 보조적인 역할을 수행한다.
- 일반 쓰레드가 모두 종료되면 자동적으로 종료된다.
- 가비지 컬렉터, 자동저장, 화면 자동 갱신 등에 사용된다.
- 무한루프와 조건문을 이용해서 실행 후 대기하다가 특정조건이 만족되면 작업을 수행하고 다시 대기하도록 작성한다.
⇒ 무한 루프이기때문에 sleep() 쉬고 autoSave 자동저장하고 일반 쓰레드 종료되면 자동으로 종료
예제 코드
더보기
import java.util.*;
import javax.swing.JOptionPane;
public class Try implements Runnable {
static boolean autoSave = false;
public static void main(String[] args) {
Thread t = new Thread(new Try());
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("작업파일이 자동저장되었습니다.");
}
}
⇒ 1 뜨고 2 뜨고 3뜨고 이런식으로 되다가 종료됐다.
쓰레드의 상태
쓰레드의 실행제어
쓰레드의 실행을 제어할 수 있는 메서드가 제공된다.
이 들을 활용해서 보다 효율적인 프로그램의 작성할 수 있다.
쓰레드 실행제어 메서드
- static void sleep(long millis)
static void sleep(long millis, int nanos)
지정된 시간(천분의 일초 단위)동안 쓰레드를 일시정지시킨다. 지정한 시간이 지나고 나면, 자동적으로 다시 실행대기상태가 된다.
- void join()
void join(long millis)
void join(long millis, int nanos)
지정된 시간동안 쓰레드가 실행되도록 한다. 지정된 시간이 지나거나 종료되면 join()을 호출한 쓰레드로 다시 돌아와 실행을 계속한다.
- void interrupt()
sleep()이나 join()에 의해 일시정지상태인 쓰레드를 깨워서 실행대기상태로 만든다. 해당 쓰레드에서는 interrupted Exception이 발생함으로써 일시정지 상태를 벗어나게 된다.
- void stop()
쓰레드를 즉시 종료시킨다.
- void suspend()
쓰레드를 일시정지 시킨다. resume()을 호출하면 다시 실행대기상태가 된다.
- void resume()
suspend()에 의해 일시정지상태에 있는 쓰레드를 실행대기상태로 만든다.
- static void yield()
실행 중에 자신에게 주어진 실행시간을 다른 쓰레드에게 양보(yield)하고 자신은 실행대기상태가 된다.
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java 쓰레드의 동기화(synchronization) (1) | 2023.12.09 |
---|---|
Java 쓰레드의 실행제어 메서드 (0) | 2023.12.09 |
Java 쓰레드의 우선순위, 쓰레드 그룹 (0) | 2023.12.09 |
Java 싱글쓰레드와 멀티 쓰레드, 쓰레드의 I/O 블락킹 (1) | 2023.12.09 |
Java 쓰레드의 구현과 실행 (0) | 2023.12.09 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기