2 つの SwingWorker クラス間でデータを共有する方法
概要:
Java では、 SwingWorker を使用すると、メイン スレッドをブロックすることなく、長時間実行されるタスクをバックグラウンドで実行できます。場合によっては、複数の SwingWorker クラス間でデータを共有することが必要になります。この記事では、この要件に対するソリューションを紹介します。
ソリューションの概要:
このソリューションでは、Executor フレームワーク、具体的には Executors.newCachedThreadPool() を利用して、複数の SwingWorker タスクを同時に実行します。 。各タスクは特定の操作を担当し、データ交換は共有変数またはメソッド呼び出しを通じて行われます。
実装の詳細:
1.タスクの実行:
2.データ共有:
コード例:
// SwingWorker task that performs a long-running operation and shares data class MyTask extends SwingWorker<Void, Integer> { private SharedData sharedData; // Shared variable for data exchange @Override protected Void doInBackground() { // Perform the long-running operation // Update the sharedData variable return null; } @Override protected void done() { // Notify other tasks that the data is ready for consumption } } // Main class that creates and executes the tasks class Main { private Executor executor = Executors.newCachedThreadPool(); private SharedData sharedData = new SharedData(); // Create shared data instance public static void main(String[] args) { // Create and execute multiple MyTask instances executor.execute(new MyTask(sharedData)); executor.execute(new MyTask(sharedData)); // Other thread operations and UI updates can continue here } }
注:
このソリューションは、SwingWorker タスク間のデータ交換が同期され、スレッドセーフであることを保証し、シームレスな通信を促進し、データの破損を防ぎます。 Executor フレームワークはタスクの実行を効率的に管理し、システム リソースの最適な利用を可能にします。
以上が2 つの SwingWorker クラス間でデータを共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。