我有多個線程訪問class Aufzahlen
並遞增cc變量。我不知道我是不是把cc放在volatile上,但是我的synchronized方法在這裏有任何錯誤的空間嗎?由於cc變量一次只能訪問一次。如果方法同步需要揮發性?
線程是否仍有可能在自己的緩存中存在cc變量並因此而導致混亂?我一直在運行這個代碼示例一段時間,到目前爲止沒有發現任何錯誤。
public class Aufzahlen {
private int cc=1;
public synchronized void aufzahlen() throws InterruptedException {
cc = cc +1;
}
public synchronized void printa() {
// TODO Auto-generated method stub
System.out.println("Thread: " + Thread.currentThread() + "Zahl: " + cc);
}
{
如果您正確地將所有其他訪問同步到'cc',則不會,變量不需要是易失性的。因爲cc變量是無用的,因爲沒有人讀過它。不知道爲什麼你有'拋出InterruptedException'。另外,你可以使用'cC++'。 –
我編輯了一個方法來讀取變量 –
cc的同步訪問是可以的。正如JB已經提到的那樣。如果只處理cc,也可以使用AtomicInteger。 – Dwijendra