質問: Java(Java FX)でコード500行ほどですが幾つかのスレッドで動作するプログラムを作りました。開発環境は、IntelliJ IDEAです。 JARにし実行してタスクマネージャーを確認したらConsole Window Hostが増えていくのですが、原因って何なのでしょうか? 思い当たるものとして、System.out.printは全てコメント化しました。 また実行時に一度だけSystem.getProperty("user.name")を実行していますが以後実行していません。
回答: java.exeが完了していない(アプリケーションが正常に完了しない)のが原因ではないでしょうか? スレッドを動かす際にsetDaemon(true)にしないとメインのStageが消えてもアプリケーションは完了しません。 IntelliJ上から実行するとコンソールに以下のように出ると思います。 > > Connected to the target VM, address: '127.0.0.1:57395', transport: 'socket' > > ... > > Disconnected from the target VM, address: '127.0.0.1:57395', transport: 'socket' > > > 質問者さんのアプリケーションでは`Disconnected ...`が出ていないのではないでしょうか? なお、IntelliJでのアプリケーションを実行する際のデフォルトのコンフィギュレーションは「Single instance only」のチェックがOFFのため、画面を閉じていてもプロセスが完了しない状態でも、そのプロセスを終了させずに新たにアプリケーションが起動されますので、これを繰り返すとどんどんjava.exeとconhost.exeが増えていきます。面倒でもコンフィギュレーションを「Single instance only」としておくと、実行開始時に以前のプロセスが残っていると「止めますか?」と聞いてきてくれるため「アプリケーションが終了できていない」ことに気づけます。