Мне задали вопрос из одной из моих опросов вопроса: Задача использует основной поток (не показан здесь), чтобы разделить работу сканирования ДНК между несколькими потоками. * Мастер-поток вызывает метод scanDNA (ниже) для всех остальных потоков одновременно, причем каждый поток * снабжен собственной личной долей работы (dnaList, индивидуально для каждого потока).
* * Каждый поток разделяет общий объект «результаты» как способ сообщить о ходе сканирования главному * теме задачи. Для задачи очень важно, чтобы общее количество успешных сканирований было * всегда точным. * * Улучшите общую производительность задачи, изменив метод scanDNA ниже и устраните любые дефекты. */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));
}
}
}
}
}
Я не могу понять эту проблему, я бы очень благодарен за решение этого из
как полный подсчет сканирования будет точным? –