정보처리기사 실기 - 2022년 1회 자바 기출 풀이(Runnable 인터페이스 구현과 Thread 객체 생성 문제)

Alchemist·2025년 10월 5일

정보처리기사

목록 보기
63/114

✨ 문제

class Car implements Runnable {
    int a;

    public void run() {
        System.out.println("message");
    }
}

public class Main {
    public static void main(String args[]) {
        Thread t1 = new Thread(new ___());
        t1.start();
    }
}

🎯 출제 의도

  • Runnable 인터페이스 구현 클래스의 객체를 스레드에 연결하는 구조 이해
  • Thread 생성자Runnable 객체를 전달하는 방식 숙지
  • 다형성(Upcasting) 을 활용한 스레드 실행 원리 파악

📘 개념 정리

1. Runnable 인터페이스 구현

class Car implements Runnable {
    public void run() {
        System.out.println("message");
    }
}
  • Runnable 인터페이스는 run() 메서드를 반드시 오버라이드해야 함
  • run() 안의 내용이 스레드가 실행할 작업

2. Thread 객체 생성

Thread t1 = new Thread(new Car());
  • Thread 생성자에 Runnable 구현 객체(new Car())를 전달
  • 이때 업캐스팅(RunnableObject)이 자동 적용됨

3. 스레드 실행

t1.start();
  • start()는 새로운 스레드를 생성하고 run()을 비동기 실행
  • 직접 run()을 호출하면 단순한 메서드 호출이 되어 스레드가 생성되지 않음

📝 풀이 과정

순서코드설명결과
new Car()Runnable 인터페이스 구현 객체 생성Car 객체 생성
new Thread(new Car())Thread 생성자에 Car 전달Runnable 연결
t1.start()새로운 스레드 실행run() 자동 호출
System.out.println("message");run() 내부 실행message 출력

✅ 최종 출력 결과

message

✅ 정답

Car

💡 정리

이 문제에서 꼭 알아야 할 개념:

  • ThreadRunnable 인터페이스 구현 객체를 인자로 받는다.
  • Thread t = new Thread(new Car()); 형태로 객체를 전달해야 한다.
  • start() 호출 시 내부적으로 run() 실행 → 스레드 시작.
  • run() 직접 호출 시 단일 실행이며, 스레드 동작 아님에 주의.
profile
html_programming_language

0개의 댓글