Ok on a trouvé le problème en passant dans le JobQueue.push.
A mon avis c’est lié à un correctif suite à une remontée SonarQube.
- Avant chaque worker faisait un
run()
du thread/runnable = appel bloquant, mais faire un run ce n’est pas exécuter le cycle de vie du Thread, c’est juste un appel à la méthode run, c’est mal. - Ca a été remplacé par un
start()
qui lance le thread proprement de manière asynchrone mais du coup ça redonne la main au worker qui continue de dépiler trop vite !
On va ajouter un join()
pour bloquer le worker et attendre la fin de la tache avant de dépiler la suivante.
J’ai utilisé un Thread.sleep(30s) dans l’exemple à la place de l’export.
On voit bien que les taches sont dépilées 10 par 10.
Ce sera poussé dans une prochaine révision.