[Java] 스레드(Thread) 종료하기 예제

2022. 2. 27. 20:01Back-end/Java

무한 반복하는 스레드를 만들고 종료하는 예제를 작성해보자.

 

  • 세 개의 thread를 만든다
  • 'A'를 입력받으면 첫 번째 thread를 종료한다
  • 'B'를 입력받으면 두 번째 thread를 종료한다
  • 'C'를 입력받으면 세 번째 thread를 종료한다
  • 'M'을 입력받으면 모든 thread와 main() 함수를 종료한다

 

무한 반복의 경우 while(flag)의 flag 값을 false로 바꿔서 반복문을 나간다.

 

스레드 종료하기 예제
import java.io.IOException;

public class TerminateThread extends Thread {

	private boolean flag = false;
	int i;

	public TerminateThread(String name) {
		super(name);
	}

	public void run() {

		while (!flag) {
			try {
				sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		} // while

		System.out.println(getName() + " end");
	} // run

	public void setFlag(boolean flag) {
		this.flag = flag;
	}

	public static void main(String[] args) throws IOException {

		TerminateThread threadA = new TerminateThread("A");
		TerminateThread threadB = new TerminateThread("B");
		TerminateThread threadC = new TerminateThread("C");

		threadA.start();
		threadB.start();
		threadC.start();

		int in;
		while (true) {
			in = System.in.read();
			if (in == 'A') {
				threadA.setFlag(true);
			} else if (in == 'B') {
				threadB.setFlag(true);
			} else if (in == 'C') {
				threadC.setFlag(true);
			} else if (in == 'M') {
				threadA.setFlag(true);
				threadB.setFlag(true);
				threadC.setFlag(true);
				break;
			}
		} // while

		System.out.println("main end");
	}
}
반응형