Java Sync ThreadsJAVA

Программисты JAVA общаются здесь
Anonymous
Java Sync Threads

Сообщение Anonymous »

Существует класс потоков, внутри которого запускается исполнительница и 5 потоков внутри него, а также есть класс подсчета с атомным изменением переменной. Внутри каждого потока существует цикл, который меняет переменную, пока она не станет 20. Как я уже писал, чтение и письмо должны быть атомными, но он все еще возвращается 21-22.class Counter {
private AtomicInteger count = new AtomicInteger(0);

public void increment() {
this.count.incrementAndGet();
}

public int getCount() {
return this.count.get();
}
}
< /code>
class Threads {
public static int main() {
var count = new Counter();

ExecutorService executor = Executors.newFixedThreadPool(3);
CountDownLatch latch = new CountDownLatch(5);

for (int i = 0; i < 5; i++) {
executor.submit(() -> {
try {
Thread.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
while (count.getCount() < 20) {
count.increment();
}
latch.countDown();
});
}

try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
executor.shutdown();
return count.getCount();
}
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... nc-threads

Вернуться в «JAVA»