Heim >Java >javaLernprogramm >Wie kann ich mit Guava eine zeitbasierte ablaufende Karte oder einen Cache in Java erstellen?
Zeitbasierte Java-Karte/Cache mit ablaufenden Schlüsseln
Verwaltung zeitbasierter Einträge in einer Karte oder einem Cache in der Programmiersprache Java ist eine häufige Anforderung. Dieser Artikel bietet eine Lösung mithilfe von Google Collections (Guava) zum automatischen Löschen abgelaufener Einträge.
Lösung
Guavas MapMaker-Klasse kann eine zeitbasierte Karte mit einstellbarem Ablauf erstellen Einstellungen. Die MapMaker-API ermöglicht die Anpassung verschiedener Parameter, wie zum Beispiel:
Nutzung Beispiel
Der folgende Codeausschnitt zeigt, wie eine gleichzeitige zeitbasierte Karte erstellt wird:
ConcurrentMap<key graph> graphs = new MapMaker() .concurrencyLevel(4) .softKeys() .weakValues() .maximumSize(10000) .expiration(10, TimeUnit.MINUTES) .makeComputingMap( new Function<key graph>() { public Graph apply(Key key) { return createExpensiveGraph(key); } });</key></key>
In diesem Beispiel löscht die Karte abgelaufene Einträge automatisch alle 10 Minuten.
Update
In Guava 10.0 und höher ist das MapMaker-Methoden wurden zugunsten des CacheBuilder veraltet:
LoadingCache<key graph> graphs = CacheBuilder.newBuilder() .maximumSize(10000) .expireAfterWrite(10, TimeUnit.MINUTES) .build( new CacheLoader<key graph>() { public Graph load(Key key) throws AnyException { return createExpensiveGraph(key); } });</key></key>
Das obige ist der detaillierte Inhalt vonWie kann ich mit Guava eine zeitbasierte ablaufende Karte oder einen Cache in Java erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!