Hãy xem xét đoạn mã sau, tôi muốn làm cho nó một sợi lớp an toàn, do đó nó sẽ không bao giờ có được số lẻ:Tôi có thể sử dụng đồng bộ hóa với trường cuối cùng không?
class Test {
private int value = 0;
private final Object lock;
public void add() {
synchronized (lock) {
value++;
value++;
}
}
public int getValue() {
synchronized (lock) {
return value;
}
}
}
Tôi bây giờ nghi ngờ của trường khóa, được tuyên bố là cuối cùng, sẽ này vấn đề? hoặc nó sẽ phá vỡ an toàn chủ đề?
Tôi nghĩ rằng nếu trường khóa không được khai báo là cuối cùng, đây phải là lớp an toàn cho luồng. Nếu kết luận này là sai, xin vui lòng sửa tôi, cảm ơn bạn.
Xem câu hỏi [this] (http://stackoverflow.com/questions/2101327/final-variable-and-synchronized-block-in-java). – Lion