J'ai reçu une question d'un de mes quiz d'interview la question suivante: Une tâche utilise un fil principal (non montré ici) pour partager le travail de numérisation de l'ADN entre plusieurs threads. * Le thread principal invoque la méthode scanDNA (ci-dessous) sur tous les autres threads en même temps, chaque thread * disposant de son propre partage privé du travail (le dnaList, individuel à chaque thread).
* * Chaque thread partage l'objet 'results' commun afin de signaler la progression de l'analyse au thread maître * de la tâche. Il est très important pour la tâche que le nombre total d'analyses réussies soit * toujours précis. * * Améliorez les performances globales de la tâche en modifiant la méthode scanDNA ci-dessous et en corrigeant les éventuels défauts. */java multithreading program 4
private interface DNA {
public boolean scan();
}
public void scanDNA(List<DNA> dnaList, Properties results) {
synchronized (results) {
Iterator<DNA> i = dnaList.iterator();
Object lock = new Object();
while (i.hasNext()) {
if (i.next().scan()) {
String key = "Successful Scans Performed";
synchronized (lock) {
results.setProperty(key,
String.valueOf(Integer.valueOf(results.getProperty(key)) + 1));
}
}
}
}
}
Je ne comprends pas ce problème, je remercie vraiment pour résoudre ceci
comment le compte total de l'analyse sera-t-il exact? –