JAVA/Java Platform, Standard Edition

[공식 문서] 멀티스레딩 구현을 위한 기본 인터페이스(Runnable)

yebin0322 2025. 2. 10. 16:20
반응형

https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html

Runnable

  • Java에서 멀티스레딩을 구현할 때 사용되는 기본 인터페이스
  • 쓰레드에서 실행될 코드를 정의하는 인터페이스
  • 람다 표현식이나 메소드 참조로 사용할 수 있는 함수형 인터페이스(@FunctionalInterface)
  • Thread 클래스를 상속하지 않고도 멀티스레딩을 구현할 수 있음

특징

  1. 단일 메소드 보유(run())
  • run() 메소드 안에 스레드가 실행할 코드를 작성해야 함
  • 반환값이 없고, 매개변수도 없음
  1. 객체를 직접 스레드로 실행할 수 없음
  • Runnable을 구현한 객체를 Thread에 전달하여 실행해야 함
  1. Thread를 상속하지 않아도 멀티스레딩 구현 가능
  • 클래스 상속을 자유롭게 유지하면서 스레드를 사용할 수 있음

사용

  1. Runnable 인터페이스 구현(익명 클래스)
  • Thread 객체를 생성할 때 Runnable을 구현한 객체를 전달하여 실행

    public class MyRunnable implements Runnable {
      @Override
      public void run() {
          System.out.println("Thread is running...");
      }
    
      public static void main(String[] args) {
          MyRunnable myRunnable = new MyRunnable();
          Thread thread = new Thread(myRunnable);
          thread.start();  // 쓰레드 실행
      }
    }
  1. 람다 표현식 사용

    public class Main {
     public static void main(String[] args) {
         Runnable task = () -> System.out.println("Thread is running...");
         Thread thread = new Thread(task);
         thread.start();
     }
    }
  2. 익명 내부 클래스 사용 : 익명 클래스를 사용하여 객체를 따로 생성하지 않고 바로 Runnable 구현 가능

    public class Main {
     public static void main(String[] args) {
         Thread thread = new Thread(new Runnable() {
             @Override
             public void run() {
                 System.out.println("Thread is running...");
             }
         });
         thread.start();
     }
    }
반응형