L'exécution de java runtime.exec() pour de multiples processus
Dans mon programme j'ai une liste de n
éléments.
Je vais être en itérant la liste et de lancer un processus comme ceci:
Runtime.getRuntime.exec("cmd /C start abc.bat"+listitem() )
J'ai besoin de maintenir un décompte de 4 processus. Une fois tout le processus est terminé, j'ai besoin de commencer le processus , de sorte que le processus de comptage doit être 4.
Je suis en mesure d'initier des 4 processus en même temps, mais vous ne savez pas comment faire pour garder le nombre de 4. Fondamentalement, j'ai besoin d'une notification une fois qu'un processus est terminé, pour que je puisse commencer la prochaine, tout le filetage est possible.
Toute aide sur la façon de le mettre en œuvre, quelqu'un peut-il partager un morceau sur cette exigence?
OriginalL'auteur Vigneshwaran | 2013-08-02
Vous devez vous connecter pour publier un commentaire.
Vous devez avoir quatre threads qui prennent chacun une cession d'une piscine, puis la remplir, puis quand c'est fait, effectuer la tâche suivante. Ce serait comment:
Puis commencer à quatre de ces threads.
Son exemple est complet, il a un temps d'Exécution.getRuntime et je peux juste copier coller complètement dans mon code. Aviez-vous fait la même chose, la vôtre aurait probablement été la bonne réponse...
Le but n'est DONC pas nécessairement de créer un copier/coller de réponses, mais plutôt de bonnes réponses. Mon commentaire est encore tout à fait valable et cette réponse est de mauvaise qualité, mais c'est le cas des OP droit d'accepter toute réponse qu'ils choisissent.
Comme vous l'avez dit, les gens ont le droit de choisir. Et moi, monsieur, choisir de ne pas nuage de ma tête avec tous les trucs sur des choses sur les choses.
une chose est sûre. stackoverflow.com/questions/541487/... stackoverflow.com/questions/10723346/...
OriginalL'auteur tbodt
Utiliser un
ThreadPoolExecutor
de taille 4 et unRunnable
de mise en œuvre qui commence leProcess
puis invoqueProcess.waitFor()
. Depuis le pool de threads sera limité à 4 fils et 4 fils va commencer un processus, puis attendre pour cela, vous serez assuré qu'il ne sera pas plus de 4 enfants les processus en cours d'exécution.Un exemple de code pour vous aider le long de votre chemin:
Le thread principal? L'entrée de fil? Je ne vais pas écrire le programme pour l'OP, juste point sur un bon chemin.
Tim Bender : +1 . Félicitations à 10k 🙂
Je vous remercie. 🙂 Je craque sur les downvotes assez vite.
OriginalL'auteur Tim Bender
Processus#waitFor()
J'ai édité le code pour inclure le code qui fonctionne pour moi. Le 4 threads continuellement les processus et dès qu'il quitte le thread s'exécute à nouveau dans la boucle while jusqu'à ce que vous appelez
shutdownNow()
OriginalL'auteur Narendra Pathai
Vous pouvez utiliser fixe le pool de threads avec la taille 4, qui garantit plus de 4 threads actifs à un moment donné
OriginalL'auteur Evgeniy Dorofeev