java thread 생성 2가지

이우철·2025년 8월 13일

아는분이 면접 질의에 나왔다고 해서 정리해 드립니다

자바로 thread 생성을 하는데 2가지 방법이 있음

  1. Thread 상속
  2. Runnable 구현
  1. 상속을 통한 생성
package java_test;

/*
 * T
 */
class ThreadA extends Thread {
    public void run() {
        System.out.println("Thread running by extending Thread class!");
    }
    
    public static void main(String[] args) {
    	ThreadA t1 = new ThreadA();
        t1.start(); // 새로운 스레드가 실행됨
    }
}
  • Thread 클래스를 상속받으므로, 다른 클래스를 동시에 상속받을 수 없음 (Java는 단일 상속만 지원).
  • run() 메서드 안에 스레드가 수행할 작업을 정의.
  • start() 메서드를 반드시 호출해야 새로운 스레드가 실행(run()만 호출하면 새로운 스레드가 만들어지지 않고, 단순한 메서드 호출임).
  1. runnable
package java_test;

class ThreadRunnable implements Runnable {
    public void run() {
        System.out.println("Thread running by implementing Runnable interface!");
    }
    
    public static void main(String[] args) {
    	ThreadRunnable myRunnable = new ThreadRunnable();
        Thread t1 = new Thread(myRunnable);
        t1.start();
    }
}
  • 다른 클래스를 상속받으면서 동시에 스레드를 구현할 수 있음 (다중 상속을 우회).
  • 코드의 재사용성과 구조가 좋아짐 (스레드와 작업의 분리가 쉬움).
  • 대부분의 경우 권장되는 방식 (특히 멀티쓰레드 환경에서 자주 사용).

cf. java8이상 > lambda식 구현

Thread t = new Thread(() -> System.out.println("Thread by lambda!"));
t.start();
profile
개발 정리 공간 - 업무일때도 있고, 공부일때도 있고...

0개의 댓글