[Java] 스레드(Thread) 종료하기 예제
2022. 2. 27. 20:01ㆍBack-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");
}
}
반응형
'Back-end > Java' 카테고리의 다른 글
[Java] 스레드(Thread) - wait(), notify() 활용 예제 (0) | 2022.02.27 |
---|---|
[Java] 멀티 스레드 동기화(multi-threaded synchronization) (0) | 2022.02.27 |
[Java] 스레드(Thread) 우선순위 - (MIN, NORM, MAX)_PRIORITY (0) | 2022.02.27 |
[Java] 스레드(Thread) 개념 정리 - sleep(), wait(), join() (0) | 2022.02.27 |
[Java] 자바에서 예외(Exception) 처리를 하는 이유 (0) | 2022.02.26 |