我遇到了一個Java類的例子,它聲稱是線程安全的。任何人都可以請解釋它如何可以線程安全?我可以清楚地看到,類中的最後一個方法沒有防止任何讀者線程的併發訪問。或者,我在這裏錯過了什麼?部分線程安全是否使Java類線程安全?
public class Account {
private Lock lock = new ReentrantLock();
private int value = 0;
public void increment() {
lock.lock();
value++;
lock.unlock();
}
public void decrement() {
lock.lock();
value--;
lock.unlock();
}
public int getValue() {
return value;
}
}
將volatile關鍵字添加到count將使其線程安全。 – sturcotte06
另外,你的鎖必須是最終的。 – sturcotte06
@ sturcotte06 - 是的......但兩個評論都是重點。這不是關於如何正確編寫代碼。這是關於這個版本的具體屬性,以及它是否「線程安全」......以及這實際上意味着什麼。 –