私は自分自身にJavaスレッドを教えていましたが、少し混乱する何かに気づきました。engine
実装というクラスを作りましたRunnable
。runメソッドは、「Hello World」を出力し、1秒間スリープして、繰り返します。
私の主な方法では、次のようになります。
public static void main(String[] args) {
Thread thread = new Thread(engine);
thread.start();
System.out.println("Done.");
}
予想通り、「HelloWorld」と「Done」が表示されます。すぐに印刷されたため、mainメソッドが終了しましたが、予期していなかったのは、mainの終了に達した後も、開始したスレッドが実行を継続したことです。
メインが終了した後もプログラムが実行され続けるのはなぜですか?mainが終了すると、プロセスが終了し、すべてのスレッドが強制的にクリーンアップされると思いました。これは、Javaプログラムを終了するために、すべてのスレッドを明示的に結合/強制終了する必要があることを意味しますか?