У меня есть (скажем) 10 потоков. Все потоки увеличивают счетчик и тоже будут регистрироваться. Счетчик представляет собой целое число в атомах c, но иногда я получаю повторяющиеся значения в счетчике. То, что я ожидаю, - это то, что counter является поточно-ориентированным, позволяет увеличивать счетчик только одним потоком за раз, читать только одним потоком за раз. Что я должен делать по-другому ?! Спасибо
Class A{
public void AM(){
ExecutorService executor = Executors.newFixedThreadPool(threadPoolCount);
List tasks = new ArrayList(tasklist);
for(loop tasks) {
Future<t> futureObjects = executor.invokeAll(task);
}
}
}
Class B implements Callable{
public Object call(){
//call method log
}
}
Class C {
static AtomicInteger counter = new AtomicInteger(1);
public void log(){
log("counter: "+counter)
counter.getAndIncrement();
}
}