Potrzebuję Map
(lub dowolnej kolekcji), która obsługuje czas do zwolnienia dla wpisów i usuwa je automatycznie.Mapa z automatycznie wygasającymi elementami
Wiem, że jest guawa MapMaker
, ale wygasa jego elementy w kolejnych operacjach odczytu/zapisu, a nie automatycznie, przez bieżący wątek. Ponadto możliwości wygaśnięcia MapMaker
są teraz przenoszone do CacheBuilder
. Chodzi o to, że nie chcę pamięci podręcznej - chcę wygasić elementy
Czy jest coś gotowego do użycia? (To nie jest trudne do wdrożenia to sam, ale lepiej użyć ponownie coś)
Czy potrzebujesz elementy jakoś wyraźnie „die” (na przykład poprzez wywołanie niektóre metody) na czas? Jeśli po prostu trzeba wyrzucić wygasłe elementy, sprawdzanie znaczników czasu elementów w czasie dostępu powinno wystarczyć. – 9000
Możesz mieć uruchomiony wątek okresowo wywołujący Cache.cleanup() w celu wywołania eksmisji wygasłych wpisów. Chociaż nie jest to natychmiastowe, wewnętrzny wątek ma zbyt wiele ograniczeń (nie jest zgodny z J2EE/GAE, cierpi z powodu efektu psa, itp.). –
@Ben Manes dzięki za sugestię. Jednak nie podoba mi się interfejs Cache. Po pierwsze, wymusza to wyliczanie wartości. Nie potrzebuję tego. Jeśli zwrócę wartość NULL, spowoduje to NPE. To dlatego, że zawsze wywołuje funkcję getOrCompute, a ja potrzebuję po prostu uzyskać - jak prostą mapę. Wtedy, nawet przy wychwytywaniu NPE, nie mogłem sprawić, żeby działało (być może moja wina), ale zawsze wygasało wpisy, mimo że były dostępne. – Bozho