在this java tutorial中有一些代碼顯示了一個示例來說明關鍵字的使用。我的觀點是,爲什麼我不應該寫的是這樣的:關於synchronized關鍵字如何處理鎖定和線程匱乏的問題
public class MsLunch {
private long c1 = 0;
private long c2 = 0;
//private Object lock1 = new Object();
//private Object lock2 = new Object();
public void inc1() {
synchronized(c1) {
c1++;
}
}
public void inc2() {
synchronized(c2) {
c2++;
}
}
}
,而不會打擾創建鎖定的對象?另外,爲什麼麻煩實例化那個鎖定對象?我不能只傳遞一個空引用?我想我在這裏錯過了一些東西。
另外,假設我有兩個公共同步方法在同一個類中被多個線程訪問。這兩種方法永遠不會同時執行是真的嗎?如果答案是肯定的,是否有一種內置的機制可以防止一種方法捱餓(從未執行過或執行過的次數與其他方法相比)?
爲什麼反對票?我應該把這個問題提交給程序員嗎? – JoulinRouge
您只能同步對象。在null上同步將拋出一個NPE。 – shmosel