Java 스레드(Thread)와 Runnable 인터페이스

코딩Java
읽는데 5분 소요
처음 쓰여진 날: 2026-02-17
마지막 수정일: 2026-02-17
조회수: 2

요약

Java에서 스레드를 생성하는 두 가지 방법(Thread 상속, Runnable 구현)을 알아봅니다. 정보처리기사 실기에 출제된 스레드 문제를 풀기 위한 핵심 개념을 정리합니다.

스레드 핵심 정리

개념설명예시
스레드 (Thread)프로그램 안에서 동시에 실행되는 작업 단위음악 재생하면서 채팅하기
Runnable 인터페이스run() 메서드를 구현하여 스레드 생성class Car implements Runnable
Thread 클래스 상속Thread를 상속받아 스레드 생성class Car extends Thread
start()스레드를 실행하는 메서드t1.start();
run()스레드가 실행할 코드를 담는 메서드public void run() { }

스레드란?

스레드(Thread) 는 프로그램 안에서 동시에 실행되는 작업 단위입니다.

보통 프로그램은 코드를 위에서 아래로 한 줄씩 실행합니다. 하지만 스레드를 사용하면 여러 작업을 동시에 처리할 수 있습니다.

text
코드 하이라이팅 중...

예를 들어, 음악을 들으면서 채팅을 하는 앱은 "음악 재생" 스레드와 "채팅" 스레드가 동시에 실행되는 것입니다.


스레드 생성 방법 2가지

Java에서 스레드를 만드는 방법은 2가지입니다.

방법키워드핵심
방법 1: Runnable 인터페이스 구현implements RunnableThread 생성자에 객체 전달
방법 2: Thread 클래스 상속extends Thread직접 start() 호출

두 방법 모두 run() 메서드에 스레드가 실행할 코드를 작성하고, start()로 스레드를 실행합니다.

Java 스레드 생성 방법 2가지 비교
Runnable 구현 방식과 Thread 상속 방식 모두 run() 메서드를 구현하고 start()로 실행합니다.


방법 1: Runnable 인터페이스 구현

인터페이스Runnable구현(implements)하는 방법입니다. 시험에 출제된 방식입니다.

단계별 과정

1단계: Runnable 인터페이스를 구현하는 클래스를 작성합니다.

java
코드 하이라이팅 중...

Runnable은 Java가 제공하는 인터페이스입니다. "이 클래스는 스레드로 실행할 수 있다"는 의미입니다.

2단계: run() 메서드를 구현합니다.

java
코드 하이라이팅 중...

run() 메서드는 Runnable 인터페이스가 요구하는 메서드입니다. 인터페이스를 구현하는 클래스는 인터페이스의 메서드를 반드시 구현해야 합니다.

3단계: Thread 객체를 생성할 때, Runnable 구현 클래스의 인스턴스를 전달합니다.

java
코드 하이라이팅 중...

new Car()로 Car 객체를 만들고, 이것을 Thread 생성자에 전달합니다. Thread는 이 객체의 run() 메서드를 실행할 준비를 합니다.

4단계: start()로 스레드를 실행합니다.

java
코드 하이라이팅 중...

start()를 호출하면 새로운 스레드가 만들어지고, 그 안에서 Car의 run() 메서드가 실행됩니다.

전체 코드

java
코드 하이라이팅 중...

실행 흐름

순서코드설명
1new Car()Runnable을 구현한 Car 객체 생성
2new Thread(new Car())Thread 객체 생성, Car 객체를 전달
3t1.start()새 스레드 시작 -> Car의 run() 실행
4run() 실행"run" 출력

방법 2: Thread 클래스 상속

Thread 클래스를 상속(extends)받는 방법입니다.

java
코드 하이라이팅 중...

Thread를 상속받으면 Car 자체가 Thread이므로, new Thread()를 따로 만들지 않고 바로 start()를 호출할 수 있습니다.


두 가지 방법 비교

구분Runnable 구현Thread 상속
키워드implements Runnableextends Thread
스레드 생성new Thread(new Car())new Car()
스레드 실행t1.start()t1.start()
run() 구현필수필수
다른 클래스 상속가능 (인터페이스는 여러 개 구현 가능)불가능 (Java는 단일 상속)

시험 문제 풀이 전략

핵심 패턴 외우기

java
코드 하이라이팅 중...

빈칸 문제 풀이법

  1. 클래스 선언부에서 implements Runnable 또는 extends Thread를 확인합니다
  2. implements Runnable이면 -> new Thread(new 클래스명())
  3. extends Thread이면 -> new 클래스명()

정보처리기사 실기 기출 문제