Mam pamięć podręczną Google guava, która ładuje dane z bazy danych i buforuje je przy użyciu klucza podstawowego. Obiekty, które generuję z bazy danych, są niezmienne, a zbudowanie obiektu wymaga dostępu do kilku tabel. Co dzieje się w następujący scenariusz:Co robi program Google Guava LoadingCache, gdy wywołanie zostanie unieważnione podczas wykonywania obciążenia?
- gwintu 1: wywołuje cache.load (10) i bufor jest wypełniana na podstawie klucza podstawowego bazy danych o wartości 10
- gwintu 2: wiersz aktualizuje bazy danych z podstawowej klawisz 10, a więc wywołuje cache.invalidate (10) unieważnia się, zanim zakończy się cache.load (10).
Co robi Guava Loading Cache, gdy unieważnia się (x) podczas wykonywania load (x)?
Robi [niewłaściwą rzecz] (https://github.com/google/guava/issues/1881). – dnault