Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)에서 익명 클래스를 활용해 스레드를 생성하는 방법

스레드(Thread)는 프로그램의 다른 부분과 동시에 실행될 수 있는 기능 단위입니다. 모든 자바 프로그램에는 최소 한 개의 스레드가 존재하며, 이를 메인 스레드(main thread)라고 합니다. 메인 스레드는 JVM(Java Virtual Machine)이 프로그램 시작 시점에 main() 메서드를 호출할 때 함께 생성됩니다.

자바에서는 일반적으로 Thread 클래스를 상속하거나 Runnable 인터페이스를 구현하는 방식으로 스레드를 생성합니다. 그런데 별도의 클래스를 정의하지 않고 익명 클래스(anonymous class)를 활용하면 Thread 클래스를 상속하지 않고도 간결하게 스레드를 만들 수 있습니다.

예제 코드

public class AnonymousThreadTest {
    public static void main(String[] args) {
        new Thread() {
            public void run() {
                for (int i=1; i <= 5; i++) {
                    System.out.println("run() method: " + i);
                }
            }
        }.start();
        for (int j=1; j <= 5; j++) {
            System.out.println("main() method: " + j);
        }
    }
}

실행 결과

main() method: 1
run() method: 1
main() method: 2
run() method: 2
main() method: 3
run() method: 3
main() method: 4
run() method: 4
main() method: 5
run() method: 5

위 예제에서는 new Thread() { ... } 형태로 익명 클래스를 정의하고, 그 안에서 run() 메서드를 오버라이드한 뒤 곧바로 start()를 호출합니다. 이 방식을 사용하면 별도의 서브클래스를 만들 필요 없이 일회성 스레드 작업을 손쉽게 처리할 수 있어 코드가 훨씬 간결해집니다.

실행 결과를 보면 main() 메서드의 출력과 run() 메서드의 출력이 번갈아 나타나는 것을 확인할 수 있습니다. 이는 메인 스레드와 새로 생성된 스레드가 동시에 실행되고 있음을 보여주는 것으로, 멀티스레딩이 실제로 동작하고 있다는 증거입니다.