Lorsque nous créons un pool de threads à l'aide du service Executor de Java et soumettez des threads à ce pool de threads, dans quel ordre ces threads sont-ils exécutés?Pool de threads Java ExecutorService: Ordre d'exécution des threads
Je veux m'assurer que les threads soumis en premier, s'exécutent en premier. Par exemple, dans le code ci-dessous, je veux premier 5 fils pour obtenir exécutés en premier, suivi par les 5 fils et ainsi de suite ...
// Create a thread pool of 5 threads.
ScheduledExecutorService exService = Executors.newScheduledThreadPool(5, new ModifiedThreadFactory("ReadThreadPool"));
// Create 100 threads.
MyThread[] threads = createMyThreads(100);
// Submit these 100 threads to thread pool for execution.
for(MyThread thread : threads) {
exService.submit(thread);
}
fil de Pool Est-ce que Java fournit une API à cet effet, ou avons-nous besoin de mettre en place une file d'attente FIFO à notre fin pour y parvenir. Si le pool de threads de Java ne fournit aucune fonctionnalité de ce type, je suis vraiment intéressé de comprendre la raison de l'inexistence de cette fonctionnalité car elle me semble être un cas d'utilisation très courant. Est-ce techniquement impossible (ce qui me semble assez improbable), ou est-ce juste un manque?
buddy il est écrit dans le javadoc de cette classe –
J'espère que ces objets 'MyThread' sont juste mal nommés et ne s'étendent pas réellement' java.lang.Thread'. Ils devraient simplement être des tâches 'Runnable'. L'exécuteur leur donnera un fil à exécuter. (Le fait que Thread implémente Runnable est une erreur historique.) – Boann