2012-05-08 36 views
2

JavaでTicking collection/Mapと呼んでいるもののいずれかが良い実装を指し示すことができます。コレクション内の要素に有効期限があります。コレクションの特定の要素が期限切れになると、コレクションは特定の種類のアラームを発生させるか、ハンドラを呼び出します。要素の有効期限が切れたときにシグナル機能を使用したマップの期限切れ

期限切れのキーを自動的に削除する、期限切れのマップのGuava実装を見ました。

Expiring map

+0

それでは、なぜグアバの実装はあなたに受け入れられないのですか? –

+0

"期限切れのキーを自動的に削除する期限切れマップのGuava実装を見ました。"私は、要素を削除するのではなく、要素の有効期限が切れたことを警告する必要があると言ったのではありません。もしその機能があるなら、それを使用します。 – mawia

+1

[removeListener]の登録について(http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/cache/CacheBuilder.html#removalListener%28com.google.common.cache.RemovalListener %29)に期限切れのアイテムが通知されますか? – assylias

答えて

3

グアバは、立ち退きにコールバックをサポートしています。

Cache<String, String> cache = CacheBuilder.newBuilder() 
      .expireAfterAccess(100, TimeUnit.SECONDS) 
      .removalListener(new RemovalListener<Object, Object>() { 
       public void onRemoval(RemovalNotification<Object, Object> objectObjectRemovalNotification) { 
        //do something 
       } 
      }) 
      .build(); 
+0

ああ、申し訳ありませんが、私はassyliasのコメントが表示されませんでした! –

+0

問題はありません - 問題がjavadocのどこかで解決されているかどうかはわかりませんでしたが、マップエントリがGC'ed +されている場合は、OPがアイテムをマップに戻したい場合エントリがマップ内に存在しない短い時間ウィンドウ。 – assylias

+0

弱いキー/値を使用する場合にのみ適用されますか?私はもっ​​と調査する必要があります... –

関連する問題