WEEK 3-8: Java Thread

ensalada.de.pollo·2025년 5월 3일

be

목록 보기
12/44

쓰레드(Thread)

쓰레드(Thread)는 프로세스 내에서 독립적으로 실행되는 작은 작업 단위입니다.

+) 운영체제에서 보는 쓰레드

싱글 쓰레드(Single Thread)

하나의 쓰레드가 모든 작업을 직렬적으로 처리합니다.
자바 프로그램은 main() 메서드가 기본적으로 하나의 쓰레드로 실행이 됩니다.
싱글 쓰레드의 경우 여러 작업을 동시에 처리하지 못하고, 한 작업이 끝나야 다음 작업을 수행할 수 있습니다.

멀티 쓰레드(Multi Thread)

여러 개의 쓰레드가 동시에 여러 작업을 처리합니다.
각 쓰레드는 독립적으로 실행이 되고, 병렬로 작업이 진행됩니다.
그렇기 때문에 CPU 자원을 효율적으로 활용할 수 있고, 병렬로 작업이 되는 만큼, 대기 시간 동안 다른 작업을 동시에 처리할 수 있습니다.

쓰레드 구현 방법

1. Thread class 상속

public class MyThread extends Thread {
	@Override
    public void run() {
    	/* works */
    }
}

MyThread t = new MyThread();
t.start(); // 새로운 쓰레드에서 run()을 실행

2. Runnable interface 구현

권장하는 방식입니다.

public class MyRunnable implements Runnable {
	@Override
    public void run() {
    	/* works */
    }
}
Thread t = new Thread(new MyRunnable());
t.start();

쓰레드 관련 주요 메서드

  • start(): 새로운 쓰레드를 생성하여 run() 메서드를 실행합니다.
  • run(): 쓰레드가 실행할 작업을 정의합니다(직접호출하면 병렬 작업이 되지 않습니다).
  • join(): 해당 쓰레드가 끝날 때까지 다른 쓰레드가 기다립니다.

Runnable interface 사용을 권장하는 이유

  • 실행 로직과 쓰레드 제어 로직을 분리하여 유지보수에 있어 좋습니다.
  • 인터페이스라는 점에서 다른 클래스를 상속받으면서 구현이 가능하기 때문에 확장성 측면에서도 좋습니다.
  • 하나의 Runnable 구현체를 여러 쓰레드에서 공유하여 실행할 수 있어 재사용성 측면에서도 좋습니다.

자료 및 코드 출처: 스파르타 코딩클럽

0개의 댓글