Comment partager des données entre deux classes SwingWorker
Introduction :
En Java, en utilisant SwingWorker permet d'exécuter des tâches de longue durée en arrière-plan sans bloquer le thread principal. Parfois, il devient nécessaire de partager des données entre plusieurs classes SwingWorker. Cet article présente une solution à cette exigence.
Présentation de la solution :
La solution utilise le framework Executor, en particulier Executors.newCachedThreadPool(), pour exécuter plusieurs tâches SwingWorker simultanément. . Chaque tâche est responsable d'une opération spécifique et l'échange de données s'effectue via des variables partagées ou des invocations de méthodes.
Détails de mise en œuvre :
1. Exécution des tâches :
2. Partage de données :
Exemple de code :
// 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 } }
Remarque :
Cette solution garantit que l'échange de données entre Les tâches SwingWorker sont synchronisées et thread-safe, facilitant une communication transparente et empêchant la corruption des données. Le framework Executor gère efficacement l'exécution des tâches, permettant une utilisation optimale des ressources système.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!