쓰레드가 일반적인 처리를 실행하고 있는 상태를 [작업중]이라고 부르고 이 쓰레드를 중단하고 싶은 때는 [종료 요구]를 합니다. 그리고 종료에 필요한 뒷정리를 시작할 때 [종료 처리 중] 이고 여기서 끝나면 진짜로 쓰레드가 종료합니다.
종료하는 역할
public class CountupThread extends Thread {
private long counter = 0;
private volatile boolean shutdownRequested = false;
public void shutdownRequest() {
shutdownRequested = true;
interrupt();
}
public boolean isShutdownRequested () {
return shutdownRequested;
}
public final void run () {
try {
while (!isShutdownRequested())
doWork();
} catch (final InterruptedException e) {
} finally {
doShutdown();
}
}
private void doWork () throws InterruptedException {
counter++;
System.out.println("doWork : counter = " + counter);
Thread.sleep(500);
}
private void doShutdown () {
System.out.println("doWork : counter = " + counter);
}
}
종료 요구를 제시하는 역할
public class Main {
public static void main (final String[] args) {
System.out.println("main: BEGIN");
try {
final CountupThread t = new CountupThread();
t.start();
Thread.sleep(100000);
System.out.println("main : shutdownRequest");
t.shutdownRequest();
System.out.println("main: join");
t.join();
} catch (final InterruptedException e) {
e.printStackTrace();
}
System.out.println("main: END");
}
}
'Development > Programming' 카테고리의 다른 글
[Scala] Implicit Parameters (0) | 2015.02.03 |
---|---|
[Java Design Patten] Thread Specific Storage 패턴 (0) | 2014.11.26 |
[Java Design Patten] Future 패턴 (2) | 2014.08.30 |
[Java Design Patten] Worker Thread 패턴 (0) | 2014.07.04 |
[Java Design Patten] Thread per Message 패턴 (0) | 2014.06.25 |