자바의 멀티스레드 > 스레드를 생성하는 방법
Thread 하위 클래스로 부터 생성
Thread 클래스를 상속받아 스레드를 생성하는 방식
Thread 클래스의 서브 클래스를 정의하고 run() 메서드를 오버라이딩하여 실행할 작업을 구현한다.
start() 메서드를 호출하여 스레드를 실행시키고 start() 메서드 내부에서 run() 메서드가 호출되면서 스레드가 동작한다.
장점
- 구현이 간단하고 직관적이다.
- 일반적인 클래스의 상속과 동일한 특징을 가진다.
- Thread 클래스를 상속받아서 사용하기 때문에, 스레드 내부에서 this를 사용하여 스레드 자신을 참조할 수 있다.
단점
- 자바는 단일 상속만을 지원한다.
- 이미 다른 클래스를 상속한 경우에는 Thread 하위 클래스로부터 생성하는 방식으로 스레드를 구현할 수 없다.
class MyThread extends Thread {
public void run() {
// 실행할 작업 구현
}
}
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start(); // 스레드 시작
}
메인스레드에서 start 메서드를 호출하고 MyThread라는 작업 스레드를 실행하는 구조다.
Runnable 방식
Runnable 인터페이스를 구현하여 스레드를 생성하는 방식이다.
Runnable 인터페이스는 run() 메서드만을 정의하고 있다. 따라서 스레드 동작을 위해 Runnable 인터페이스를 구현한 클래스를 정의하고 run() 메서드에 실행할 작업을 구현한다.
장점
- 자바는 다중 인터페이스 구현이 가능하다.
- 이미 다른 클래스를 상속한 경우에도 Runnable 방식으로 스레드를 구현할 수 있다.
- 스레드 동작 로직과 스레드가 실행할 클래스가 분리되어 있어 더 유연한 구현이 가능하다.
class MyRunnable implements Runnable {
public void run() {
// 실행할 작업 구현
}
}
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start(); // 스레드 시작
}
마무리
사용 목적에 따라 Thread 방식과 Runnable 방식 중 하나를 선택하여 멀티 스레드를 구현하면 된다.
보통은 Runnable 방식을 더 권장하며, 객체지향적인 설계를 위해 Runnable 인터페이스를 사용하여 스레드를 생성하는 경우가 더 많다고 한다.
References
https://change-words.tistory.com/entry/Tread-Pool
https://www.daleseo.com/java-thread-runnable/
https://mangkyu.tistory.com/258
** 사실과 다른 내용이 있을 수 있습니다. 언제든지 피드백 부탁드립니다!
'스터디 > 혼공학습단 10기 - 자바 & 머신러닝' 카테고리의 다른 글
[혼공학습단] 파이썬과 비교해보는 자바의 컬렉션 프레임워크 (0) | 2023.08.07 |
---|---|
[혼공학습단] 자바의 컬렉션 프레임워크 들어가기 앞서... (0) | 2023.08.06 |
[혼공학습단] 혼공자바 4주차 - 자바의 스레드(Thread) 맛보기 (0) | 2023.07.30 |
[혼공학습단] 혼공머신 4주차 - 앙상블 모델 4가지 맛보기 (0) | 2023.07.29 |
[혼공학습단] 데몬 스레드, 손코딩으로 익혀보자 (0) | 2023.07.24 |
댓글