2017-10-01 6 views
-2

私はスレッディングが初めてですが、javafxアプリケーションを動作させるためにスレッドを使用する必要があります。私の問題は、自分のプログラムで多くの計算を実行し、その間で定期的にUIを更新する必要があることです。私は、javafxスレッドで計算を行うことはUIの更新をブロックしているので、その作業を別のスレッドに移す必要があることを知っています。スレッドから結果を定期的に取り出す最良の方法

これまでにスレッドで作業したことがないので、スレッドを定期的に開始し、計算の一部を行い、結果をjavafxスレッドに返すための最良の方法は何ですか?

+3

もっと具体的にすることができますか?あなたがしようとしていることの簡単な例を投稿してください。おそらく、それがどのように動作するかについての一般的な説明ではなく、いくつかの関連する例を最初に見て、これを習得する方が簡単でしょう。現在の表現方法の質問に対する良い答えは、基本的にマルチスレッドに関するチュートリアル全体である必要があります。 –

+0

この[example](https://stackoverflow.com/a/44056730/230513)は、バックグラウンドで結果を計算し、聴取GUIが表示する中間結果を公開します。 – trashgod

+0

プログラムは人生のゲームの実装です。基本的には、キャンバスをセルの状態を表示してレンダリングし、しばらく待ってから、セルを更新して再びキャンバスをレンダリングします。しかし、私はすでにスケジュールされたExecutorサービスを使ってこれを行うことができましたので、私はあまりにも早く尋ねました。 – JG55

答えて

0

一般に、インターフェイス(Runnableインターフェイスのような)またはメッセージバスライブラリを使用して、「コールバック」という名前のスレッドイベントに対して「サブスクリプション」を実行します。

Implementing callbacks in Java with Runnable

"Observerパターンは、" 広く研究するものです。または「Publish Subscribe」(Google PubSubのようなライブラリやツールには関係ありません)

RxJavaはこれを中心にいくつかの良いパターンを公開していますが、必要以上に複雑かもしれません。

定期的な結果には、タイマーのようなオブジェクトが必要ですが、考え方は同じです。

関連する問題