멀티스레드와 동시성

Ch02. 스레드 생성과 실행 - 스레드 생성(Runnable)

webmaster 2024. 8. 1. 13:27
728x90

Runnable 인터페이스

Runnable 인터페이스

  • Java가 제공하는 스레드 실행용 인터페이스

예제

Runnable 인터페이스 구현
Runnable 인터페이스를 구현한 객체 실행
결과

  • 실행 결과는 기존과 같다. 차이가 있다면, 스레드와 해당 스레드가 실행할 작업이 서로 분리되어 있다는 점이다.
  • 스레드 객체를 생성할 때, 실행할 작업을 생성자로 전달하면 된다.

Thread 상속 vs Runnable 구현

스레드 사용할 때는 Thread를 상속받는 방법보다 Runnable 인터페이스를 구현하는 방식을 사용하자.

두 방식이 서로 장단점이 있지만, 스레드를 생성할 때는 Thread 클래스를 상속하는 방식보다 Runnable 인터페이스를 구현하는 방식이 더 나은 선택이다

Thread 클래스 상속 방식

  • 장점
    • 간단한 구현: `Thread` 클래스를 상속받아 run() 메서드만 재정의하면 된다.
  • 단점
    • 상속의 제한: 자바는 단일 상속만을 허용하므로 이미 다른 클래스를 상속받고 있는 경우 Thread 클래스를 상속 받을 수 없다.
    • 유연성 부족: 인터페이스를 사용하는 방법에 비해 유연성이 떨어진다.

Runnable 인터페이스를 구현 방식

  • 장점
    • 상속의 자유로움: `Runnable` 인터페이스 방식은 다른 클래스를 상속받아도 문제없이 구현할 수 있다.
    • 코드의 분리: 스레드와 실행할 작업을 분리하여 코드의 가독성을 높일 수 있다.
    • 여러 스레드가 동일한 `Runnable` 객체를 공유할 수 있어 자원 관리를 효율적으로 할 수 있다.
  • 단점
    • 코드가 약간 복잡해질 수 있다.
    • Runnable 객체를 생성하고 이를 Thread 에 전달하는 과정이 추가된다.

Runnable 인터페이스를 구현하는 방식을 사용하자. 스레드와 실행할 작업을 명확히 분리하고, 인터페이스를 사용하므로, Thread 클래스를 직접 상속하는 방식보다 더 유연하고 유지보수 하기 쉬운 코드를 만들 수 있다.

728x90