Comment faire pour exécuter des tâches dans ExecutorService séquentiellement?
J'ai trois fils qui sont reliés, c'est à dire le deuxième thread s'exécute après le premier meurt.
C'est le code que j'ai:
public class Main {
public static void main(String args[]) throws Exception {
final Thread thrdA = new Thread(() -> System.out.println("Message 1"));
final Thread thrdB = new Thread(() -> System.out.println("Message 2"));
final Thread thrdC = new Thread(() -> System.out.println("Message 3"));
thrdA.start();
thrdA.join();
thrdB.start();
thrdB.join();
thrdC.start();
thrdC.join();
}
}
Comment mettre en œuvre cette fonctionnalité à l'aide ExecutorService
au lieu de trois thread objets?
OriginalL'auteur Raees Sharif-Aamir | 2015-08-16
Vous devez vous connecter pour publier un commentaire.
Si ce que vous voulez/besoin pour exécuter un groupe d'emplois l'un après l'autre, mais dans un seul thread différent que l'application principale fil, puis utiliser
Exécuteurs#newSingleThreadExecutor
.Je suppose que mon éditer des réponses ce que vous voulez ou avez besoin.
Merci, je serais upvote si je pouvais
Je suis perplexe. Votre question porte sur plusieurs threads, mais il semble que vous ne voulez faire qu'une seule chose à la fois.
c'est le droit. OP seulement besoin d'un seul thread à exécuter plusieurs tâches, l'une aftwr l'autre.
OriginalL'auteur Luiggi Mendoza
Vous pouvez contrôler l'exécution séquentielle de threads à l'aide de SingleThread ExecutorService avec l'avenir.méthode get ().
DummyTask Classe
SequentialExecution Classe
Sortie
La sortie sera toujours de même et toutes les tâches seront exécutés dans l'ordre.
Executors.newSingleThreadExecutor()
, pas l'utilisation deFuture
.OriginalL'auteur Amit Tamrakar
Si vous utilisez déjà un pool de threads dans votre application, vous pouvez la réutiliser par le biais de zéro filetée proxy série d'exécuteur testamentaire, sans créer de spécial mono-thread pool de threads.
Une mise en œuvre est décrite dans le javadoc de la section de l'Exécuteur testamentaire de l'interface, un autre, optimisation de la mise en œuvre, à mon dépôt Github CodeSamples.
OriginalL'auteur Alexei Kaigorodov