Je viens juste de commencer à apprendre des sujets et à en arriver à des malentendus sur leur fonctionnement.Faire en sorte que les fils fonctionnent correctement
Voici ma classe:
public class MyThread extends Thread {
private static int NUM = 0;
private int id;
public MyThread() {
id = NUM++;
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new MyThread().start();
}
}
public void run() {
System.out.println(id + " started");
try {
Process p = Runtime.getRuntime().exec("javac -version");
p.waitFor();
} catch (Exception e) {
System.out.println("Call a doc!");
}
System.out.println(id + " finished");
}
}
/*
Just a sidenote.
I am creating new javac process just to slow an application down.
Simple System.out.println(…) is a way faster.
*/
Pourquoi je reçois toujours tous messages "... a commencé" dans un premier temps et après que les messages "... finis"? Peu importe combien de fils ai-je commencé, je vois toujours:
0 started
1 started
2 started
3 started
4 started
5 started
6 started
7 started
8 started
9 started
0 finished
1 finished
3 finished
4 finished
8 finished
5 finished
2 finished
6 finished
9 finished
7 finished
est-ce pas le but de threads à paralléliser l'exécution?
Peut-être que j'ai besoin de synchroniser quelque chose? Ou fait une erreur négligente? Ou…?
Expliquez, s'il vous plaît.
MISE À JOUR:
Pourquoi ne vois-je pas, disons que:
0 started
1 started
0 finished
2 started
1 finished
2 finished
Merci à tous pour le traitement.
votre anglais va bien. Bonne question. – sje397
@ sje397 Merci, monsieur! – Mick