SwingWorker: 非同期タスクの総合ガイド
Java Swing では、イベント ディスパッチ スレッド (EDT) で長時間実行タスクを実行すると、 GUIをフリーズします。これに対処するために、SwingWorker は、GUI をブロックせずに、時間のかかる操作を別のスレッドで実行するための強力なソリューションを提供します。
SwingWorker について
SwingWorker は、設計された抽象クラスです。特に Swing アプリケーション向けです。これにより、開発者はバックグラウンド スレッドでタスクを非同期に実行し、タスクが完了したときに EDT で結果を取得できます。
コードへの SwingWorker の実装
以前の内容について別のクラスからの再描画に関する質問です。SwingWorker は次のように使用できます。
実装例
次の例は、次の方法を示しています。 SwingWorker を使用してフィボナッチ数列を計算し、実行後にメッセージ ボックスに結果を表示します。 2 番目:
class FibonacciWorker extends SwingWorker<Integer, Integer> { @Override protected Integer doInBackground() throws Exception { return fibonacci(n); // Calculate the Fibonacci sequence for n } @Override protected void done() { try { JOptionPane.showMessageDialog(null, get()); } catch (Exception e) { e.printStackTrace(); } } private int fibonacci(int n) { return (n <= 1) ? n : fibonacci(n - 1) + fibonacci(n - 2); } } public static void main(String[] args) { new FibonacciWorker().execute(); // Execute the SwingWorker }
その他のリソース
以上がSwingWorker は Java Swing アプリケーションでの GUI フリーズをどのように防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。