期限切れキーのある Java 時間ベースのマップ/キャッシュ
Java プログラミング言語で、マップまたはキャッシュ内の時間ベースのエントリを管理するは一般的な要件です。この記事では、Google コレクション (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 分ごとに自動的に削除します。
アップデート
グアバ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 中国語 Web サイトの他の関連記事を参照してください。