Runnable을 만드는 다양한 방법

Walter Mitty·2025년 4월 8일
0

개인공부

목록 보기
49/51

중첩 클래스를 사용하면 Runnable을 더 편리하게 만들 수 있다.

중첩 클래스로 활용하기

특정 클래스 내에서만 활용되는 스레드라면,

import static util.MyLogger.log;

public class RunnableMain {

    public static void main(String[] args) {
        log("main() start");
        
        MyRunnable myRunnable = new MyRunnable();
        Thread thread = new Thread(myRunnable);
        thread.start();
        
        log("main() end");
    }

	// 중첩 클래스로 만들어서 활용할수도 있다.
    static class MyRunnable implements Runnable {
        @Override
        public void run() {
            log("run()");
        }
    }
}

출력 👇

16:09:39.600 [     main] main() start
16:09:39.602 [     main] main() end
16:09:39.603 [ Thread-0] run()

익명 클래스

특정 메서드 안에서만 간단히 정의하고 사용하고 싶다면,

log("main() start");

// 익명 클래스로 사용
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        log("run()");
    }
};
Thread thread = new Thread(runnable);
thread.start();

log("main() end");

출력 👇

16:09:39.600 [     main] main() start
16:09:39.602 [     main] main() end
16:09:39.603 [ Thread-0] run()

익명 클래스 변수 없이 바로 전달

log("main() start");

// 바로 전달
Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        log("run()");
    }
});
thread.start();

log("main() end");

람다

log("main() start");

// 람다~
Thread thread = new Thread(() -> log("run()"));
thread.start();

log("main() end");

0개의 댓글