Java/문법
Thread - 여러 작업을 동시에 수행해보자
JuNo_12
2025. 4. 18. 13:58
Thread 란?
: 프로그램 내에서 '독립적'으로 실행되는 하나의 작업 단위
- 싱글 쓰레드 는 한 번에 하나의 작업만 처리하지만 멀티쓰레드는 여러 작업을 동시에 처리할 수 있다.
- 멀티 쓰레드를 활용하면 여러 작업을 병렬로 수행할 수 있어 처리 성능을 향상시킬 수 있다.
- Runnable 인터페이스를 활용해 쓰레드를 구현해야한다. (유지 보수성과 재사용성 향상, 확장 가능성)
- 쓰레드 제어 로직: start(), join(), isAlive()
public class Main {
public static void main(String[] args) {
MyRunnable task = new MyRunnable();
// 기존 클래스를 유지하면서 확장해서 활용
task.printMessage();
Thread thread0 = new Thread(task);
Thread thread1 = new Thread(task);
thread0.start();
thread1.start();
}
}
public class MyRunnable extends MyNewClass implements Runnable { // 다중 상속
@Override
public void run() {
String threadName = Thread.currentThread().getName();
for (int i = 0; i < 10; i++) {
System.out.println("현재 쓰레드: " + threadName + " - " + i);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class MyNewClass { // 새로운 클래스
public void printMessage() {
System.out.println("MyClass 기능 실행");
}
}
코드를 보면, MyRunnable 클래스에서 다중 상속을 한 것을 확인할 수 있다.
extends와 implements의 차이에 대해 표로 정리해보았다.
| 항목 | extends | implements |
| 대상 | 클래스 or 추상 클래스 | 인터페이스 |
| 의미 | 상속 (재사용) | 구현 (약속된 메서드 정의) |
| 다중 사용 | 불가능 (단일 상속) | 가능 (다중 구현 가능) |
클래스 2개를 같이 상속받을 수는 없다. 따라서 메서드를 구현해주는 인터페이스를 활용해 다중 상속을 해주어야한다.