[JAVA] 자바 쓰레드를 만드는 2가지 방법 (Thread, Runnable)

[JAVA] 자바 쓰레드를 만드는 2가지 방법 (Thread, Runnable)

자바에서 쓰레드(Thread)를 만드는 방법은 크게 2가지가 있다.

첫번째는 Thread 클래스를 상속받아서 사용하는 방법이다.

두번째는 Runnable 클래스를 구현해서 사용하는 방법이다. Thread가 아닌 다른 클래스를 상속받고 싶을 때, Runnable 클래스를 구현해서 사용한다. 자바에서 상속은 1개 클래스까지만 허용하기 때문이다.

1. Thread 클래스를 상속받아서 사용

public class MainClass {

    public static void main(String[] args) {
        MainClass mainCls = new MainClass();
        mainCls.main();
    }
    
    public void main() {
        Thread thread = new myThread();
        thread.start();
    }
    
    public class myThread extends Thread {
        @Override
        public void run() {
            System.out.println(“myThread”);
        }
    }
}

또는 아래와 같이 간략하게 써도 된다.

    Thread myThread = new Thread() {
        @Override
        public void run() {
            System.out.println(“myThread”);
        }
    };
    myThread.start();

2. Runnable 클래스를 구현해서 사용

Thread가 아닌 다른 클래스를 상속받고 싶을 때, Runnable 클래스를 구현해서 사용한다. 자바에서 상속은 1개 클래스까지만 허용하기 때문이다.

아래 예제에서는 Something 이라는 클래스를 상속받았다.

public class MainClass {

    public static void main(String[] args) {
        MainClass mainCls = new MainClass();
        mainCls.main();
    }
    
    public void main() {
        Thread thread = new Thread(new myRunnable());
        thread.start();
    }

   
    public class myRunnable extends Something implements Runnable {
        @Override
        public void run() {
            System.out.println(“myRunnable”);
        }
    }
}

따로 클래스 상속이 필요없다면 아래와 같이 간략하게 써도 된다.

    Thread myRunnable = new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println(“myRunnable”);
        }
    });

    myRunnable.start();