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