본문 바로가기

언어/Java

스레드 안전 종료

스레드를 강제 종료시키기 위해 Thread는 stop() 메소드를 제공하고 있으나 이 메소드는 deprecated(더 이상 사용하지 않음) 되었다. stop메서드 사용 권장 X, 스레드를 안전하게 종료하는 방법은 사용하던 리소스들을 정리하고 run() 메소드를 빨리 종료하는 것이다.

 

아래 예제는 메인 스레드에서 3초 후에 stop 필드값을 true로 설정해서 PrintThread를 종료한다.

package ch14.sec07.exam01;

public class PrintThread extends Thread {
	private boolean stop;

	public void setStop(boolean stop) {
		this.stop = stop;
	}

	@Override
	public void run() {
		while(!stop) {
			System.out.println("실행 중");
		}
		System.out.println("리소스 정리");
		System.out.println("실행 종료");
	}
}
package ch14.sec07.exam01;

public class SafeStopExample {
	public static void main(String[] args) {
		PrintThread printThread = new PrintThread();
		printThread.start();

		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
		}

		printThread.setStop(true);
	}
}

'언어 > Java' 카테고리의 다른 글

네트워크 예제 1  (0) 2023.08.16
네트워크  (0) 2023.08.16
스레드 동기화  (0) 2023.08.16
스레드 상태  (0) 2023.08.16
스레드 이름 부여하기  (0) 2023.08.16