본문 바로가기

JAVA/DAY 21 _ 23.09.14

Thread_Ex

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