
앞선 아티클에서 ThreadGroup 메서드를 살펴보았습니다. 이제 이 내용을 기반으로 예제를 작성해 보겠습니다.
멀티 스레드(8) - 스레드 그룹 4
앞선 아티클에서 우리는 스레드 그룹 생성 기능을 살펴보았습니다. 멀티 스레드(8) - 스레드 그룹 3스레드 그룹을 명시적으로 선언하는 방법도 있습니다. ThreadGroup 생성자를 이용해서 객체
nozeroslope.tistory.com
아래 예제에서 스레드 그룹을 생성하고, 정보를 출력한 다음 3초 후 스레드 그룹의 interrupt( ) 메서드를 호출하여 스레드 그룹에 포함된 모든 스레드를 일괄 종료시킵니다. 여기서는 Thread 클래스의 생성자도 중요하게 사용되니 다시 확인합니다.
멀티 스레드(8) - 스레드 그룹 3
스레드 그룹을 명시적으로 선언하는 방법도 있습니다. ThreadGroup 생성자를 이용해서 객체를 생성하는 방식입니다. 이 때 생성자에서 ThreadGroup의 이름만 파라미터로 줄 수 있고, 부모 ThreadGroup과
nozeroslope.tistory.com
public class ExampleMain {
public static void main(String[] args) {
ThreadGroup myGroup = new ThreadGroup("myGroup");
WorkThread workThreadA = new WorkThread(myGroup, "workThreadA");
WorkThread workThreadB = new WorkThread(myGroup, "workThreadB");
workThreadA.start();
workThreadB.start();
System.out.println("[ main 스레드 그룹의 list() 메서드 출력 내용 ]");
ThreadGroup mainGroup = Thread.currentThread().getThreadGroup();
mainGroup.list();
System.out.println();
try { Thread.sleep(3000); } catch (InterruptedException e) {}
System.out.println("[ myGroup 스레드 그룹의interrupt() 메서드 호출 ]");
myGroup.interrupt();
}
}
/* 출력
[ main 스레드 그룹의 list() 메서드 출력 내용 ]
java.lang.ThreadGroup[name=main,maxpri=10]
Thread[main,5,main]
java.lang.ThreadGroup[name=myGroup,maxpri=10]
Thread[workThreadA,5,myGroup]
Thread[workThreadB,5,myGroup]
[ myGroup 스레드 그룹의interrupt() 메서드 호출 ]
workThreadB interruped
workThreadA interruped
workThreadB종료됨
workThreadA종료됨
*/
// InterruptedException 발생 시 스레드가 종료되도록 함
public class WorkThread extends Thread {
public WorkThread(ThreadGroup threadGroup, String threadName) {
/* 스레드 그룹과 스레드 이름을 설정한다. 특정 스레드를 생성하면서,
* 해당 스레드의 생성자에 스레드 그룹과 이름을 전달하면
* 그 스레드는 전달된 스레드 그룹의 소속이 된다.
*/
// 부모 클래스인 Thread의 생성자 중 하나가 호출된다.
super(threadGroup, threadName);
}
@Override
public void run() {
while(true) {
try {
Thread.sleep(1000);
// InterruptedException 발생 시, while문 빠져나와 스레드 종료
} catch (InterruptedException e) {
System.out.println(getName() + " interruped");
break;
}
}
System.out.println(getName() + "종료됨");
}
}
'Programming > JAVA' 카테고리의 다른 글
멀티 스레드(9) - 스레드 풀 2 : 스레드 풀 생성 및 종료 1 (2) | 2025.01.07 |
---|---|
멀티 스레드(9) - 스레드 풀 1 : 스레드 풀의 정의 (0) | 2025.01.05 |
멀티 스레드(8) - 스레드 그룹 4 (0) | 2024.12.30 |
멀티 스레드(8) - 스레드 그룹 3 (1) | 2024.12.27 |
멀티 스레드(8) - 스레드 그룹 2 (1) | 2024.12.23 |