Bonjour à tous,
comment faire en java pour n'exécuter une commande que si la précédente à était terminée??
Merci
Version imprimable
Bonjour à tous,
comment faire en java pour n'exécuter une commande que si la précédente à était terminée??
Merci
Bonjour,
Pourrais-tu être plus explicite ?
Le seul cas possible ou une commande peut être effectué alors qu'une autre n'est pas terminé est lorsqu'elles sont sur différents thread.
Si tu as le thread T1 qui fait la commande A, le thread T2 qui fait la commande B, et que tu veux que B soit exécutée avant A, tu dois effectuer l'instruction T2.join() dans ton thread 1 juste avant d'exécuter 1.
Ce que tu peux faire, s'est setter une priorité à tes threads et à les exécuter.
Code:
1
2
3
4
5
6 threadA.setPriority(2); threadB.setPriority(5); threadB.start(); threadA.start();
pour mes reecherches de fonctionalités, j'ai trouvé un truc dans ce gout là:
Mes bat sont super cours alors je ne peux jurer de rien mais j'ai l'impression que cmd2 se lance quand cmd est fini.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 String cmd; cmd = "C:\\fichier.bat"; cmd2 = "C:\\fichier2.bat"; // ainsi on peut lancer des programme tout a fait autonome // on peut soit faire p.waitfor() ou pas les deux cas fonctionnent correctement // je suppose aussi que c'est tout a fait vrai pour le cas d'UNIX (je ne l'ai pas tester try { Runtime r = Runtime.getRuntime(); Process p = r.exec(cmd); p.waitFor();//si l'application doit attendre a ce que ce process fini r.exec(cmd2); }catch(Exception e) { System.out.println("erreur d'execution " + cmd + e.toString()); }
+1
En fait, c'est même très moche... alors qu'il suffit d'utiliser la synchronisation!...
En gros ça donne quelque chose comme ça:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 thread1() { // je fais mon boulot ... // j'avertis les autres que j'ai terminé: synchronized(monitor) { monitor.notify(); } } thread2() { // j'attends le top départ: synchronized(monitor) { monitor.wait(); } // c'est parti mon kiki ... }