salut j'ai un petit exercice et je veux savoir comment se passe les chose
voila le code compler
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import java.util.Random ;
public class ThreadOrder {
static int count=0;
public static void main(String[] args) {
Counter ct = new Counter();
Tracker trk1 = new Tracker(ct, "thread one");
Tracker trk2 = new Tracker(ct, "thread two");
trk1.start();
trk2.start();
}
}
class Tracker extends Thread {
Counter ct;
String message;
static private Random trueOrFalse = new Random() ;
Tracker(Counter ct, String msg) {
this.ct = ct;
message = msg;
}
public void run() {
if (trueOrFalse.nextBoolean()) yield() ;
int count = ct.nextCounter() ;
if (trueOrFalse.nextBoolean()) yield() ;
System.out.println(message+ " "+ count);
}
}
class Counter {
private int count=0;
public int nextCounter() {
synchronized(this) {
count++;
return count;
}
}
} |
mes question:
quand j'execute le programme j'ai deux resultats
soit : thread one 2
tread two 1
ou tread two 1
thread one 2
alors que mois je crois y'a plus.
pour l'objet ct y'a t il qu'un seul que les deux thread le modifie?
pour cette instruction
if (trueOrFalse.nextBoolean())
.
est ce qu'el dois etre true pour executer le code qui suit ou que ça soit true ou false??
Partager