バックグラウンドスレッド(またはワーカースレッド)に関するチュートリアルを読みましたが、SwingWorkerとデーモンスレッドの間で混乱しましたが、同じですか?GUI以外のアプリケーションを作成している場合、両方ともバックグラウンドでジョブを実行するため、SwingWorkerまたはデーモンスレッドを作成する必要がありますか?
1661 次
2 に答える
1
Thread
s には、デーモンと非デーモンの2 種類があります。デーモン以外のすべての実行が停止すると、JVM は実行をThread
停止します。
SwingWorker
s は、時間のかかるタスクをイベント ディスパッチ スレッドから非同期に実行して、GUI が応答しなくなるのを防ぐためのユーティリティです。ASwingWorker
は ではありませんThread
。実行Runnable
のために に送信できるタスクです。Thread
GUI で何もしていない場合は、Thread
. Thread
GUI 用に別のアクションを実行する必要がある場合は、 SwingWorker
.
于 2012-04-26T23:29:03.733 に答える
0
SwingWorker は、ユーザー インターフェイスとのやり取りを容易にする特殊なクラスです。GUI コンポーネントへのアクセスは、特別な GUI スレッドからのみ行う必要があります。SwingWorker にはdone
GUI スレッドでの実行が保証されているメソッドがあるため、安全に ui を更新できます。
Swing UI を操作しない場合は、単純なスレッドを使用する必要があります。さらに、いくつかのスレッドが必要な場合ExecutorService
は、どれがスレッド プールであるかを確認することをお勧めします。
于 2012-04-26T23:27:16.390 に答える