帶有過期密鑰的Java 基於時間的映射/快取
在Java 程式語言中,管理映射或快取中基於時間的條目是一個常見的要求。本文提供了一種使用 Google Collections (Guava) 自動清除過期條目的解決方案。
解決方案
Guava 的 MapMaker 類別可以建立基於時間的地圖,過期時間可調設定。 MapMaker API 允許自訂各種參數,例如:
使用情況範例
以下程式碼片段示範如何建立並發的基於時間的地圖:
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); } });
在此範例中,地圖每10 分鐘自動清除過期條目。
更新
在 Guava 10.0 和後來,MapMaker 方法已被棄用,取而代之的是 CacheBuilder:
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); } });
以上是如何使用 Guava 在 Java 中建立基於時間的過期映射或快取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!