Потокобезопасность счётчика при конкурентном доступе
Условие задачи
Метод main запускает два потока: – один увеличивает значение счётчика 4 раза через метод inc(), – второй (в самом методе main) уменьшает значение счётчика 4 раза через метод dec(). Оба потока работают с одним и тем же объектом Test2. Определить результат метода get() и указать, при каких условиях он может вернуть 0.
javapublic class Test2 implements Runnable {
private int counter;
public void inc() {
counter++;
}
public void dec() {
counter--;
}
public int get() {
return counter;
}
@Override
public void run() {
for (int i = 0; i < 4; i++) {
inc();
}
}
public static void main(String[] args) {
Test2 test2 = new Test2();
new Thread(test2).start();
for (int i = 0; i < 4; i++) {
test2.dec();
}
System.out.println(test2.get());
}
}