2011-08-17 16 views
11

Czy nowy wątek z Androidem klasy LruCache jest bezpieczny? Dokument java doc mówi:Bezpieczeństwo wątków Androida LruCache (Android 3.1)

Ta klasa jest wątkowa. Wykonać wiele operacji cache atomowo synchronizując na cache:

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

    }} 

oni powiedzieć NIE bezpieczny wątku? Dlaczego trzeba synchronizować, jeśli klasa jest bezpieczna dla wątków?

Dzięki!

Odpowiedz

17

Nie ma znaczenia, czy klasa jest wątkowa, czy nie. Jeśli korzystasz z wielu operacji, możesz nadal wymagać synchronizacji. Zależy od tego, jak go używasz.

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); 
}