在我的課堂我有這樣的代碼:如何在java中提供2個變量的原子讀/寫?
int counter1;
int counter2;
public void method1(){
if (counter1>0) {
...........do something
if (counter2>0) {
....do something else
}
}
public void method2() {
counter1=0;
counter2=0;
}
我需要兩個計數器設置在一起。恐怕OS只能設置counter1後才能調用method1。這有可能嗎? 謝謝。
使用單元測試測試死鎖情況相當棘手。 – 2012-02-10 10:03:06
是的。但這是可能的。一種方法是注入鎖,而不是使用synchronized關鍵字。 – 2012-02-10 10:05:02
不明白,鎖定私人和方法之間有什麼區別?線程1可以調用方法1,線程2可以調用方法1,一個會被阻塞 - 兩種方法都沒有區別(方法和私有變量);我唯一能看到的是你想允許對班級中不同位數的數據進行不同的鎖定(這是合理的,但你必須知道你在做什麼......) - 然後我會爭辯說數據屬於不同的類 – Nim 2012-02-10 10:07:37