Java
MultiThread

Java でスレッドを起動する方法2種類 +@

More than 1 year has passed since last update.

Thread のサブクラス

Thread クラスを継承して run() メソッドを実装する。

public class Qiita {
    public static void main(String[] args) {
        new HelloThread("World!").start();
        new HelloThread("Qiita!").start();
    }
}

class HelloThread extends Thread {
    private String message;

    public HelloThread(String message) {
        this.message = message;
    }

    public void run() {
        System.out.print("Hello, " + message);
    }
}

Runnable インターフェース

Runnable インターフェースを実装したクラスを、Thread のコンストラクタに渡す。

public class Qiita {
    public static void main(String[] args) {
        new Thread(new Greeting("World!")).start();
        new Thread(new Greeting("Qiita!")).start();
    }
}

class Greeting implements Runnable {
    private String message;

    public Greeting(String message) {
        this.message = message;
    }

    public void run() {
        System.out.print("Hello, " + message);
    }
}

(+@) ThreadFactory でスレッドを生成する

ThreadFactory でスレッドの生成を抽象化する。

public class Qiita {
    public static void main(String[] args) {
        ThreadFactory factory = Executors.defaultThreadFactory();
        factory.newThread(new Greeting("Qiita!")).start();
    }
}