FXアプリケーションスレッドで実行されている簡単なJavaFXアプリケーションを作成しました。 FXアプリケーションのGUIコントロールを一定の間隔で更新するには、Platform.runLater()と呼ぶ別のスレッド(FXスレッドではない)上で実行される無限ループでバックグラウンド処理が必要です。 FX Guiアプリケーションを閉じると、バックグラウンドスレッドはその実行を続けます。FXスレッドがJavaで終了した場合にスレッドを終了する最も効率的な方法
FXスレッドが終了した後に、バックグラウンドスレッドを終了させるためには、私は今、バックグラウンドスレッドでwhileループでfxThread.isAlive()を使用しています。 この方法では、whileループ条件がfalseになるとFXスレッドが終了すると、バックグラウンドスレッドは自動的に終了します。
これは悪い選択ですか?同じタスクを達成するための代替的かつ効率的な方法は何ですか?ない非常に最善の解決策のスレッドがfxThread.isAlive()
に合格し、時間にしている一方で、最悪のシナリオでは原因は、あなたのfxThread
は、死ぬかもしれない入るPlatform.runLater
を与えるそのfxThread.isAlive()
を呼び出すことによって
//imports
public class SimpleClockFX implements Application{
Thread fxThread;
//other variables
@Override
public void start(Stage primaryStage){
fxThread = Thread.currentThread();
//other stuff...
new Thread(()->{
//logic...
while(fxThread.isAlive()){
//logic...
Platform.runLater(()->{
//update gui controls
});
}
}).start();
}
おそらくFXアプリケーションの終了方法とバックグラウンドスレッドの起動方法については、http://codereview.stackexchange.com/ – ManoDestra
を参照してください。また、 'thread.setDaemon(true)'を渡していないとします。 – AntJavaDev
あなたの質問にコメントを入れないでください。 – AntJavaDev