class MyThread extends Thread {
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println("Number: " + i);
try {
Thread.sleep(1000); // 1초 동안 스레드 일시 정지
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
// Q. Thread.sleep(1000);를 try-catch 블록 안에 넣는 이유?
// A. InterruptedException이라는 예외가 발생할 수 있기 때문
//
// Thread.sleep() 메서드는 스레드를 일시적으로 정지시키는 메서드입니다.
// 그러나 다른 스레드가 현재 스레드를 깨울 수 있으며,
// --> 이 때 InterruptedException이 발생할 수 있습니다.
// 이 예외는 스레드가 잠자고 있는 동안 다른 스레드가 해당 스레드를 강제로 깨우거나 인터럽트했을 때 발생합니다.
//
// 따라서 Thread.sleep(1000);를 사용할 때는 try-catch 블록을 사용하여
// 스레드가 인터럽트되었을 때 발생하는 예외를 적절하게 처리하는 것을 통해 코드의 안정성을 확보하는 것이 좋습니다.
// 두 개의 스레드 생성
MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
// 스레드 시작
thread1.start();
thread2.start();
// 메인 스레드는 계속 실행됩니다.
for (char letter = 'A'; letter <= 'E'; letter++) {
System.out.println("Letter: " + letter);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// # 해석:
// 각 스레드는 숫자를 출력하고 1초 동안 일시 정지한 후 종료됩니다.
// 메인 스레드는 문자를 출력하고 1초 동안 일시 정지한 후 종료됩니다.
// 이렇게 하면 두 개의 스레드가 병렬로 실행되고 메인 스레드와 함께 실행됩니다.
'JAVA > DAY 21 _ 23.09.14' 카테고리의 다른 글
Server Main (0) | 2023.09.14 |
---|---|
Network Basic (0) | 2023.09.14 |
Thread_join (0) | 2023.09.14 |
Thread 기본개념 활용 (0) | 2023.09.14 |
Thread 생성 및 호출 방법 (0) | 2023.09.14 |