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개를 같이 상속받을 수는 없다. 따라서 메서드를 구현해주는 인터페이스를 활용해 다중 상속을 해주어야한다.