일반적으로 예 ReadWriteLock
이면 충분합니다.
그러나 Java 8을 사용하는 경우 읽기 잠금을 피할 수있는 새로운 StampedLock으로 성능을 향상시킬 수 있습니다. 이것은 쓰기 (편집)와 비교하여 더 자주 읽는 (검색) 경우에 적용됩니다.
private StampedLock sl = new StampedLock();
public void edit() { // write method
long stamp = sl.writeLock();
try {
doEdit();
} finally {
sl.unlockWrite(stamp);
}
}
public Object search() { // read method
long stamp = sl.tryOptimisticRead();
Object result = doSearch(); //first try without lock, search ideally should be fast
if (!sl.validate(stamp)) { //if something has modified
stamp = sl.readLock(); //acquire read lock and search again
try {
result = doSearch();
} finally {
sl.unlockRead(stamp);
}
}
return result;
}
달성하려는 목표를 분명히하기 위해 코드를 게시하십시오. –
ReadWriteLock을 사용하십시오. – jtahlborn