Lớp này có an toàn không?AtomicInteger vs getters/setters đồng bộ
Có thể thấy giá trị không phù hợp không? Cho phép nói giá trị ban đầu của một là 80. Chủ đề 1 gọi setA(100)
và đi vào chức năng nhưng chưa gọi a.set(100)
và Chủ đề 2 đồng thời gọi getA()
. Có thể cho Chủ đề 2 thấy 80 không?
public class A {
private AtomicInteger a;
public int getA() {
return a.get()
}
public void setA(int newVal){
a.set(newVal);
}
}
Tôi biết rằng việc đồng bộ hóa sẽ đảm bảo chuỗi 2 thấy 100, nhưng không chắc chắn với AtomicInteger.