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)만큼 현재 쓰레드를 일시 정지시킵니다.