0

たとえば、私のUIスレッドはAと呼ばれるSwingWorkerスレッドを実行します。Aスレッドのdone()関数で、SwingWorkerスレッドBを作成します。これで、スレッドBのdone()関数のコードがUIスレッドで実行されます。またはスレッドA?

コードはスレッドAで実行する必要があることは理にかなっていますが、スレッドAでget()関数を呼び出さないと、スレッドAはスレッドBを待機せず、スレッドAはおそらくそのタスクを終了します。スレッドBがdone()関数でコードを実行する場合、スレッドAはまだ存在していません。では、この場合、コードはどのように処理されますか?

4

1 に答える 1

2

SwingWorker APIのドキュメントに従って、SwingWorker#done()Swingイベントディスパッチスレッド(EDT)で実行されます。done()これは、上記の両方の方法に当てはまります。この方法を使用して簡単に見つける方法があることをご存知でしょうSwingUtilities.isEventDispatchThread()

于 2012-07-22T14:15:07.990 に答える