Потокобезопасность Android LruCache (Android 3.1)

Является ли новый класс Android LruCache потокобезопасным? В документе Java говорится:

Этот класс является потокобезопасным. Выполняйте несколько операций кеша атомарно, синхронизируясь с кешем:

   synchronized (cache) {
     if (cache.get(key) == null) {
         cache.put(key, value);

   }}

Они хотели сказать НЕ потокобезопасным? Зачем нужно синхронизировать, если класс потокобезопасен?

Спасибо!


person dnkoutso    schedule 17.08.2011    source источник


Ответы (1)


Неважно, является ли класс потокобезопасным или нет. Если вы используете несколько операций, вам все равно может потребоваться синхронизация. Зависит от того, как вы его используете.

if (cache.get(key) == null)
{
  //at this point you think there is no such value in the cache
  //but another thread might have just added one between executing
  //those two lines of code
  cache.put(key, value);
}
person mibollma    schedule 17.08.2011