EDT で実行される数百の異なる関数があります。それらの多くには長時間実行されるタスクが含まれており、一部には GUI の変更が含まれています。ときどき GUI がハングすることがありますが、GUI のハングが同じ領域で 100% 発生するわけではないため、これが発生するすべての場所を追跡するのは困難です。ハングは通常、ウィンドウの最小化/最大化の後に機能し始めるため、問題の優先度は高くありませんが、最終的には実行する必要があります。
いくつかの調査の結果、SwingWorkerの下で doInBackground() を使用して、労働集約型の作業を行うメソッドに使用し、done() を GUI 描画に使用できることを発見しました。また、たまたま doInBackground() 関数にあるすべての GUI 描画にSwingUtilities.invokeLaterを使用できると思います。ただし、コード内の何百もの関数をすべて調整することは避けたいと考えています。
単一の SwingWorker を使用して、実行時間の長いメソッドを doInBackground() 関数に送信する方法はありますか? SwingWorker が使用される GUI コードが間違って配置されるたびに、invokeLater 関数を複数回使用することはそれほど頻繁ではないため、問題ではありません。
これが不可能な場合、使用できる代替手段はありますか? ありがとうございました。