Возможно у меня есть следующее определение класса, когда одна нить хочет положить а для нескольких (потенциально) ожидающие потоки:Countdownlatch и далее синхронизация
public class A {
private int a;
private CountDownLatch gate;
public A(int a) {
a = 1;
gate = new CountDownLatch(1);
}
public int getA() {
latch.await();
return a;
}
public void setA(int a) {
this.a = a;
gate.countDown();
}
}
кажется мне, что должно быть неустойчивыми, но я я не уверен ... Может ли кто-то рассказать, почему, если вообще, нужна ли дополнительная синхронизация вокруг getA, или нужно быть неустойчивым?
Ах, поэтому в состоянии защелки есть неустойчивые чтения/записи. Это, в свою очередь, является полным барьером, поэтому изменения распространяются через кеши и т. Д. Правильно? – Bober02
Да, именно это происходит. – dezhik