Bonjour,
Je cherche à exécuter plusieurs SwingWorker en parallèle. Je m'explique :
Dans mon application, l'utilisateur peut lancer un traitement relativement long mais qui n'est pas bloquant. Il peut donc le lancer et continuer à effectuer d'autres opérations. Cependant, ceci ne marche que sur le papier
Ce traitement est exécuté dans un SwingWorker qui va mettre à jour l'UI par le biais de la méthode done(), une fois doInBackground() terminée.
Durant ce traitement, l'utilisateur peut naviguer dans l'interface et ,imaginons, lancer une recherche dans la base de données. Cette recherche donne lieu à la création d'un autre SwingWorker qui va exécuter les différents traitements dans son doInBackground() et afficher les résultats dans une JTable par le biais de done().
Or, il apparaît que lorsqu'il démarre la recherche, le deuxième SwingWorker n'exécute sa méthode doInBackground() que lorsque que le premier a finit. Ce qui m'empêche de créer cette notion d'exécution en parallèle que je recherche.
J'ai lu que le thread pool de SwingWorker était limité à 10 SwingWorker, or dans l'état actuel de l'application seulement deux SW sont crées.
J'ai également lu que cela pourrait avoir un rapport avec le processeur de la machine. Si celui-ci est monocore, il ne peut lancer qu'un thread en background en plus du thread pour le GUI.
Quelqu'un pourrait-il infirmer ou affirmer ces informations ? Ou aurait-il de plus amples informations ?
Cordialement,
Partager