AWT EDTに作業単位を送信するための簡潔さはinvokeLater()
です。バックグラウンドスレッド(SwingWorkerなど)に作業要求を送信するための同様のメカニズムを持つのは良いことですが、わかっているので、これらはinvokeLater()が依存するものであるイベントキュー&ディスパッチメカニズムを一切備えていません。Javaで「イベント駆動型」バックグラウンドスレッドを作成するにはどうすればよいですか?
代わりに、私はバックグラウンドスレッドにメッセージを送信するブロックキューを与え、スレッドは基本的に受信ループを実行し、メッセージが到着するまでブロックします。
実際、バックグラウンドスレッドでEDTのような振る舞いを実装する方法は、まさにその通りでしょうか?一方、私は空にある目に見えないイベントディスパッチングキューからディスパッチされたときにいつでも、不規則にそこにぶら下がり、 "ワークドロップレット"を処理するスレッドのシンプルさが好きです。 Javaはこのような「イベント駆動型ワーカースレッド」を作成する方法を提供していますか?結局のところ、これを行うための正しい方法をメッセージキューに入れていますか?そして、関連する静脈では、invokeLater()
メッセージ通過の技術に欠点がありますか?
私が探していた「ディスパッチング」についてはよく知っているが、提供していないようだ。 – Chap
シングルスレッドエグゼキュータで実行可能ファイルを送信することは、EDTで実行可能ファイルを送信することとまったく同じです。タスクは処理のためにキューに入れられ、スレッドは現在のジョブがない場合は待機しています。 – toto2
@Chap他の回答のコメントであなたの問題の説明を読んでいましたが、あなたが探しているスレッドのエグゼキュータが1つしかないようです。 – toto2