티스토리 뷰
반응형
데몬 스레드
- 일반 스레드의 작업을 돕는 보조 스레드이다.
- 일반 스레드가 종료되면 데몬 스레드는 자동으로 종료된다. 이 점을 제외하고는 일반 스레드와 동일하다.
- 데몬 스레드의 예
- 가비지 컬렉터, 워드프로세서 자동 저장, 화면자동개신
- 데몬 스레드는 무한루프를 이용해 항시 대기하고 있다가 특정 조건에 만족하면 작업을 수행하고 다시 대기상태에 있는다.
데몬 스레드 관련 메소드
boolean isDaemon() //해당 스레드가 데몬 스레드인지 확인한다.
void setDaemon(boolean on) //파라미터 값이 true이면 스레드를 데몬스레드로 변경한다.
- setDeamon 메소드는 반드시 start()를 호출하기 전에 실행되어야 한다.
- 호출 후 실행되면 IllegalTrheadStateException이 발생한다.
public class ThreadEx4 implements Runnable {
static boolean autoSave = false;
public static void main(String [] args) {
Thread t = new Thread(new ThreadEx4());
//t.setDaemon(true); //얘가 없으면 종료되지 않는다.
t.start();
for(int i = 1; i < 5; i++) {
try{
Thread.sleep(1000);
} catch(InterruptedException e) {}
System.out.println(i);
if(i == 2) {
autoSave = true;
}
}
System.out.println("시스템 종료");
}
public void run() {
while(true) {
try {
Thread.sleep(3000);
} catch(InterruptedException e) {}
if(autoSave) {
autoSave();
}
}
}
public void autoSave() {
System.out.println("작업파일이 자동저장되었습니다.");
}
}
t.setDaemon(true) 사용
t.setDaemon(true) 사용안함
즉, 데몬 스레드를 사용하게 되면 일반 스레드(main)가 종료되었을 때 자동으로 데몬 스레드가 종료되기 때문에, 실행결과를 통해 데몬 스레드를 사용할 때와 사용하지 않을 때의 차이를 확인할 수 있다.
실행중인 모든 호출스택 출력
//getAllStackTraces() 사용
Map map = getAllStackTraces();
Iterator it = map.keySet().iterator();
- 해당 메소드(getAllStackTraces)를 사용하면 실행 중 또는 대기상태를 호출할 수있다.(작업이 완료되지 않은 모든 스레드의 호출 스택을 확인할 수 있다.)
- 프로그램을 실행하면 JVM은 가비지 컬렉션, 이벤트처리, 그래픽 처리 등 프로그램이 실행되는데 필요한 보조작업을 수행하는 데몬 스레드를 자동적으로 생성해서 실행시킨다.
- 그리고 이 들(데몬 스레드)은 Sytem Thread Group or Main Thread Group 에 속한다.
반응형
'Java > Java 기초' 카테고리의 다른 글
[Java 기초] 클래스의 프록시 (0) | 2020.03.30 |
---|---|
[Java 기초] static과 final의 조합 (2) | 2020.03.19 |
[Java 기초] static (0) | 2020.02.16 |
[Java 기초] final (0) | 2020.02.15 |
[Java 기초] public static void main(String [] args) (0) | 2020.02.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- springboot
- 이펙티브자바
- 팩토리 메소드 패턴
- 빌더 패턴
- 스프링부트
- ifPresent
- flatMap
- jdk버전
- 점층적 생성 패턴
- 이펙티브 자바
- 연관관계
- 김영한
- Spring
- junit
- @Lazy
- try with resources
- effectivejava
- JPA
- java
- mustache
- 인프런
- 생성자
- 복사 팩토리
- 빈 순환 참조
- package-private
- Effective Java
- 정적팩터리메서드
- java8
- 자바8
- try catch finally
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함