Является ли get() потокобезопасной операцией в кеше Guava?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Является ли get() потокобезопасной операцией в кеше Guava?

Сообщение Anonymous »

Я обнаружил, что операции put и get с помощью операций CacheLoader используют реентерабельную блокировку, но почему это не реализовано для операции getIfPresent?
get, которая используется getIfPresent >

Код: Выделить всё

@Nullable
V get(Object key, int hash) {
try {
if (this.count != 0) {
long now = this.map.ticker.read();
ReferenceEntry e = this.getLiveEntry(key, hash, now);
Object value;
if (e == null) {
value = null;
return value;
}

value = e.getValueReference().get();
if (value != null) {
this.recordRead(e, now);
Object var7 = this.scheduleRefresh(e, e.getKey(), hash, value, now, this.map.defaultLoader);
return var7;
}

this.tryDrainReferenceQueues();
}

Object var11 = null;
return var11;
} finally {
this.postReadCleanup();
}
}
поставить

Код: Выделить всё

 @Nullable
V put(K key, int hash, V value, boolean onlyIfAbsent) {
this.lock();
.....
Единственное, что я могу сделать для достижения потокобезопасности в базовых операциях получения/записи, — это использовать синхронизацию на клиенте?

Подробнее здесь: https://stackoverflow.com/questions/706 ... avas-cache
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»