Java:quel output est bonne?
Résolu
domxaline
-
domxaline -
domxaline -
Bonjour,
j'ai trouvé ce prg dans un livre
en l'essayant avec éclipse, son output n'as pas la même que le livre,bizarre
quelque peut m'aider svp
le prg est suivant:
output d'éclipse est:
From ThreadA:i=1
From ThreadA:i=2
From ThreadA:i=3
From ThreadA:i=4
From ThreadA:i=5
Exit from A
From ThreadB:j=1
From ThreadB:j=2
From ThreadB:j=3
From ThreadB:j=4
From ThreadB:j=5
Exit from B
From ThreadC:i=1
From ThreadC:i=2
From ThreadC:i=3
From ThreadC:i=4
From ThreadC:i=5
Exit from C
output du livre est:
From ThreadA:i=1
From ThreadA:i=2
From ThreadB:j=1
From ThreadB:j=2
From ThreadC:k=1
From ThreadC:k=2
From ThreadA:i=3
From ThreadA:i=4
From ThreadB:j=3
From ThreadB:j=4
From ThreadC:k=3
From ThreadC:k=4
From ThreadA:i=5
Exit from A
From ThreadB:j=5
Exit from B
From ThreadC:k=5
Exit from C
From ThreadA:i=1
From ThreadA:i=2
From ThreadC:k=1
From ThreadC:k=2
From ThreadA:i=3
From ThreadA:i=4
From ThreadB:j=1
From ThreadB:j=2
From ThreadC:k=3
From ThreadC:k=4
From ThreadA:i=5
Exit from A
From ThreadB:k=4
From ThreadB:j=5
From ThreadC:k=5
Exit from C
From ThreadB:j=5
Exit from B
j'ai trouvé ce prg dans un livre
en l'essayant avec éclipse, son output n'as pas la même que le livre,bizarre
quelque peut m'aider svp
le prg est suivant:
class A extends Thread { public void run ( ) { for(int i=1;i<=5;i++) { System.out.println("\t From ThreadA:i="+i); } System.out.println("Exit from A"); } } class B extends Thread { public void run ( ) { for(int j=1;j<=5;j++) { System.out.println("\t From ThreadB:j="+j); } System.out.println("Exit from B"); } } class C extends Thread { public void run ( ) { for(int k=1;k<=5;k++) { System.out.println("\t From ThreadC:i="+k); } System.out.println("Exit from C"); } } public class ExThread { public static void main(String [] args) { new A().start(); new B().start(); new C().start(); } }
output d'éclipse est:
From ThreadA:i=1
From ThreadA:i=2
From ThreadA:i=3
From ThreadA:i=4
From ThreadA:i=5
Exit from A
From ThreadB:j=1
From ThreadB:j=2
From ThreadB:j=3
From ThreadB:j=4
From ThreadB:j=5
Exit from B
From ThreadC:i=1
From ThreadC:i=2
From ThreadC:i=3
From ThreadC:i=4
From ThreadC:i=5
Exit from C
output du livre est:
From ThreadA:i=1
From ThreadA:i=2
From ThreadB:j=1
From ThreadB:j=2
From ThreadC:k=1
From ThreadC:k=2
From ThreadA:i=3
From ThreadA:i=4
From ThreadB:j=3
From ThreadB:j=4
From ThreadC:k=3
From ThreadC:k=4
From ThreadA:i=5
Exit from A
From ThreadB:j=5
Exit from B
From ThreadC:k=5
Exit from C
From ThreadA:i=1
From ThreadA:i=2
From ThreadC:k=1
From ThreadC:k=2
From ThreadA:i=3
From ThreadA:i=4
From ThreadB:j=1
From ThreadB:j=2
From ThreadC:k=3
From ThreadC:k=4
From ThreadA:i=5
Exit from A
From ThreadB:k=4
From ThreadB:j=5
From ThreadC:k=5
Exit from C
From ThreadB:j=5
Exit from B
A voir également:
- Java:quel output est bonne?
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
3 réponses
le output d'eclipse est bon car celui du livre utilise une boucle sur l'ensemble du programme (on voit que la variable A a plusieurs fois la valeur 1)
est-tu sur d'avoir bien copié le livre?
est-tu sur d'avoir bien copié le livre?
domxaline
je dois prendre 1er réponse n'est ce pas?
Terminalex
Messages postés
197
Statut
Membre
57
je ne sus pas expert avec java mais oui
Les threads s'exécutent par définition en parallèle sur le même processus, en conséquence il est impossible de prévoir l'ordre d'exécution des instructions, qui pourront a priori être différentes à chaque exécution.
Dans ton exemple, les opérations "start" sont très courtes, donc elles sont terminées avant que le "new" suivant ne se termine (la création de l'objet est une opération plus longue qu'une boucle vide de 1 à 5), donc les threads sont imperceptibles.
Tu peux essayer de d'abord créer tous tes threads (opérations "longues") avant de tous les lancer d'un coup, ce qui te permettra d'observer le parallélisme sur les boucles.
Remarque : dans ton "output du livre", il y a six threads (deux de chaque type), alors qu'il n'y en a que trois (un de chaque) dans ton "output d'eclipse"
Dans ton exemple, les opérations "start" sont très courtes, donc elles sont terminées avant que le "new" suivant ne se termine (la création de l'objet est une opération plus longue qu'une boucle vide de 1 à 5), donc les threads sont imperceptibles.
Tu peux essayer de d'abord créer tous tes threads (opérations "longues") avant de tous les lancer d'un coup, ce qui te permettra d'observer le parallélisme sur les boucles.
Remarque : dans ton "output du livre", il y a six threads (deux de chaque type), alors qu'il n'y en a que trois (un de chaque) dans ton "output d'eclipse"
public static void main(String [] args) { A a1 = new A(), a2 = new A(); B b1 = new B(), b2 = new B(); C c1 = new C(), c2 = new C(); a1.start(); b1.start(); c1.start(); a2.start(); b2.start(); c2.start(); }La confiance n'exclut pas le contrôle