比方說,我有這個類:併發從只讀域讀取和寫入的讀/寫域共享對象
public SharedObject {
private int readOnlyField;
private int readWriteField;
public SharedObject(int field1, int field2) {
this.readOnlyField = field1;
this.readWriteField = field2;
}
public getField1() {...}
public synchronized getField2() {...}
public synchronized setField2(...) {...}
}
我可以有同時使用這3種方法多線程?
很顯然,我可以用最後2種同步的方法,但我不知道如果getField1()可以與其他2
我認爲答案是肯定的同時執行,但只是要確定是否我錯過了一些微妙之處。
當然可以。如果沒有幫助,請查看http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReadWriteLock.html#readLock(),稍後我會發布更詳盡的答案 –