Je développe une application Java Desktop. Cette application exécute la même tâche public class MyTask implements Callable<MyObject> {
dans plusieurs thread simultanément.Java - SwingWorker - problème
Maintenant, quand un utilisateur clique sur un bouton "Démarrer", j'ai créé un SwingWorker myWorker
et l'ai exécuté. Maintenant, myWorker
crée plusieurs instances de MyTask
et les soumet à un ExecutorService
.
Chaque instance MyTask
possède une boucle et génère un résultat intermédiaire à chaque itération. Maintenant, je veux collecter ces résultats intermédiaires de chaque instance MyTask
dès qu'ils sont générés. Ensuite, après la collecte de ces résultats intermédiaires à partir de chaque instance MyTask
, je veux le publier par SwingWorker.publish(MyObject)
de sorte que la progression est affichée sur l'EDT.
Q1. Comment puis-je l'implémenter? Dois-je faire MyTask
sous-classe de SwingWorker
au lieu de Callable
pour obtenir des résultats intermédiaires aussi, parce que je pense que Callable
ne renvoie que le résultat final.
Q2. Si la réponse de Q1. est oui, alors pouvez-vous me donner un petit exemple pour montrer comment puis-je obtenir ces résultats intermédiaires et les agréger, puis les publier à partir SwingWorker
?
Q3. Si je ne peux pas utiliser SwingWorker
dans cette situation, alors comment puis-je l'implémenter?
Lorsque vous collectez les résultats intermédiaires de chaque tâche, souhaitez-vous qu'ils proviennent tous de la même itération? C'est à dire. collecter tous les résultats d'itération 1, puis itération 2? – mdma