-
Java - Deamon Thread, Thread GroupJava 2018. 1. 31. 13:14반응형< DeamonThread >// deamon thread는 main thread작업을 돕는 보조적인 역할을 수행 한다.// Work Thread와 마찬가지로 main thread에 의해서 생성 된다// 다만 life cycle의 차이가 있다.// deamon thread는 main thread가 끝날때 같이 끝난다.// Work thread는 작업이 다 끝나야 thread가 끝난다.public class DeamonThread extends Thread {@Overridepublic void run() {while(true) {try {Thread.sleep(500);System.out.println("Thread Working...");} catch (InterruptedException e) {e.printStackTrace();}}}}public class Main {public static void main(String[] args) throws InterruptedException {DeamonThread deamon = new DeamonThread();deamon.setDaemon(true); // Deamon Thread로 변경deamon.start();Thread.sleep(3000);System.out.println("Main Thread 종료");// 데몬 스레드는 메인 스레드가 종료될 때 같이 종료된다.}}< Thread Group >// Thread는 name을 통해 관리를 한다.// 하지만 Thread 수가 너무 많을 경우 Group을 통해 관리할 수 있다.// Thread는 자동적으로 Group을 가지고 있다.// 기본 Group는 Main Group 이다.// 단체 명령을 내릴 수 있다.// 대표적으로 interrupt()를 통해 해당 Group의 Thread를 모두 정지 시킬 수 있다.// 이 외에도 Thread Group을 사용 할 수 있는 메서드들이 있다.public class WorkThread extends Thread {public WorkThread(ThreadGroup group, String name) {super(group, name);}@Overridepublic void run() {ThreadGroup group = Thread.currentThread().getThreadGroup();System.out.println("현재 그룹 이름 : "+group.getName());System.out.println("현재 스레드 이름 : "+getName());// 스레드 그룹의 정보를 알려 준다 - 단순 디버깅용group.list(); // 이름, 그룹, 우선순위 등// try {// while(true) {// System.out.println(getName()+" 실행 중...");// Thread.sleep(500);// }// } catch (InterruptedException e) {// System.out.println("interrupt로 인한 종료");// }while(true) {System.out.println(getName()+" 실행 중...");if(Thread.interrupted()) {break;}}System.out.println(getName()+" 종료");}}public class Main {public static void main(String[] args) {// 현재 스레드 그룹 이름 알아 보기String name = Thread.currentThread().getThreadGroup().getName();System.out.println("현재 그룹 이름 : "+name);// 스레드 그룹 생성 - 그룹은 기본이 메인이다.ThreadGroup group = new ThreadGroup("MyGroup");// 스레드를 생성해서 그룹에 등록Thread thA = new WorkThread(group, "A");Thread thB = new WorkThread(group, "B");thA.start();thB.start();Thread.sleep(3000);group.interrupt(); // 그룹 단체로 종료}}반응형
'Java' 카테고리의 다른 글
Mac에서 이클립스로 C언어 프로그래밍하기 (0) 2018.02.01 Java - Thread Pool, Thread Pool Blocking (0) 2018.01.31 Java - Stop, Interrupt (0) 2018.01.31 Java - Wait, Notify (0) 2018.01.31 Java - Thread (0) 2018.01.30 댓글