티스토리 뷰

java

Java Thread 클래스 사용법

개발에대해 2024. 8. 1. 15:13
반응형

 

Java Thread 클래스 사용법: 쓰레드 생성, 시작, 중단

Java에서 멀티스레드를 구현할 때 가장 기본이 되는 Thread 클래스의 사용 방법을 정리했습니다.

Thread 클래스 상속, run() 오버라이딩, interrupt 처리 등 실전 예제와 함께 소개합니다.

 

1. Thread 클래스 상속하여 쓰레드 생성하기

Java에서 새로운 쓰레드를 만들기 위해서는 Thread 클래스를 상속받고,

run() 메서드를 오버라이딩하는 방식이 가장 기본입니다.

이 방식은 반복적인 작업이나 백그라운드 처리가 필요한 로직에 적합합니다.

 

아래는 Thread 클래스를 상속받아 구현한 Java 쓰레드 예제입니다:

private class MyThread extends Thread {

    private int interval = 10000;  // 기본 간격 10초

    public void setInterval(int interval) {
        this.interval = interval;
    }

    @Override
    public void run() {
        System.out.println("Start MyThread");

        while (!isInterrupted()) {
            // 반복 작업 수행
            try {
                Thread.sleep(interval);
            } catch (InterruptedException e) {
                System.out.println("interrupted 발생");
                Thread.currentThread().interrupt();
            }
        }

        System.out.println("End MyThread");
    }
}

 

2. Java 쓰레드 시작과 중단 방법

Thread 객체는 start() 메서드로 실행되며, run()은 내부적으로 호출됩니다.

쓰레드를 중단하려면 interrupt()를 호출하고,

대기 중에는 InterruptedException을 통해 중단을 처리할 수 있습니다.

 

다음은 쓰레드를 시작하고 중단하는 실제 코드 예시입니다:

private MyThread myThread;

public void startMyThread() {
    myThread = new MyThread();
    myThread.setInterval(50000);
    myThread.start();
}

public void stopMyThread() {
    if (myThread != null) {
        myThread.interrupt();
        myThread = null;
    }
}

 

3. Java 쓰레드 재시작 주의사항

Java에서 한 번 실행한 쓰레드는 다시 start()를 호출할 수 없습니다.

이미 중단된 쓰레드를 재사용하려면 새로운 Thread 객체를 생성해야 합니다.

이를 무시하면 IllegalThreadStateException이 발생하게 됩니다.

 

4. Thread 클래스의 주요 메서드 정리

Java 쓰레드를 제어할 때 자주 사용하는 메서드는 다음과 같습니다:

  • start() – 쓰레드를 시작하고 run()을 내부적으로 실행합니다.
  • interrupt() – 쓰레드를 중단하고, 대기 중이라면 InterruptedException을 발생시킵니다.
  • isInterrupted() – 현재 쓰레드가 중단 요청을 받았는지 확인합니다.
  • Thread.sleep(ms) – 지정된 시간(ms)만큼 현재 쓰레드를 일시 정지시킵니다.