Прошел лекцию о volatile, из нее понял что без synchronized блока нити могут неправильно изменять переменную, а только правильно читать ее. Вопрос: как с использованием synchronized правильно реализовать код, в котором каждая нить будет инкрементировать общую для всех нитей переменную на 1. Написал код (ниже), но каждый раз разные результаты, как добиться результат count = 200 после завершения работы 200 нитей.
public class VolatileTest {
public static Integer count = 0;
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < 200; i++) {
Thread thread1 = new Thread(new Jumps());
thread1.start();
}
Thread.sleep(200);
System.out.println(count);
}
}
class Jumps implements Runnable {
@Override
public void run() {
this.countIncrement();
}
public synchronized void countIncrement() {
VolatileTest.count++;
}
}