반응형
https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html
Runnable
- Java에서 멀티스레딩을 구현할 때 사용되는 기본 인터페이스
- 쓰레드에서 실행될 코드를 정의하는 인터페이스
- 람다 표현식이나 메소드 참조로 사용할 수 있는 함수형 인터페이스(@FunctionalInterface)
- Thread 클래스를 상속하지 않고도 멀티스레딩을 구현할 수 있음
특징
- 단일 메소드 보유(run())
- run() 메소드 안에 스레드가 실행할 코드를 작성해야 함
- 반환값이 없고, 매개변수도 없음
- 객체를 직접 스레드로 실행할 수 없음
- Runnable을 구현한 객체를 Thread에 전달하여 실행해야 함
- Thread를 상속하지 않아도 멀티스레딩 구현 가능
- 클래스 상속을 자유롭게 유지하면서 스레드를 사용할 수 있음
사용
- 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(); // 쓰레드 실행 } }
람다 표현식 사용
public class Main { public static void main(String[] args) { Runnable task = () -> System.out.println("Thread is running..."); Thread thread = new Thread(task); thread.start(); } }
익명 내부 클래스 사용 : 익명 클래스를 사용하여 객체를 따로 생성하지 않고 바로 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(); } }
반응형
'JAVA > Java Platform, Standard Edition' 카테고리의 다른 글
[공식 문서] 자바 날짜/시간 포맷(DateFormat) 변환 완벽 가이드 (0) | 2025.02.10 |
---|---|
[공식 문서] 자바 Timer 클래스 완벽 가이드 : 백그라운드 작업 예약과 반복 실행 (0) | 2025.02.10 |
[공식 문서] JTree와 트리 구조 데이터를 위한 데이터 모델(TreeModel) (0) | 2025.02.10 |
[공식 문서] Swing을 통한 GUI 어플리케이션 개발 : javax.swing 패키지 (2) | 2025.02.03 |
[공식 문서] Swing을 통한 GUI 어플리케이션 개발 : java.awt 패키지 (0) | 2025.02.03 |