J'ai un tableau de MyThreads (vu ci-dessous) en cours d'exécution, mais ils produisent des résultats incorrects. Quel est le problème ici?Aide débutant à comprendre les threads
import java.util.*;
class MyThread extends Thread {
public static long N;
public static long sum = 0;
synchronized public void inc() {
sum++;
}
public void run() {
for (long i = 0; i < N; i++) {
inc();
}
}
public MyThread(long num) {
N = num;
}
}
Je suppose que les fils sont interrompaient les uns des autres, ce qui provoque des résultats incorrects, mais je ne comprends pas où ni comment.
Comment exécutez-vous ces threads, et quels résultats attendez-vous? –
Quels sont les résultats incorrects? Qu'attendez-vous comme résultats? Que diriez-vous de l'extrait de code où vous démarrez et vérifiez-les? –
Vous incrémentez une variable statique. Qu'attendez-vous d'une variable partagée par toutes les instances de MyThread? – duffymo