2012-02-04 6 views

答えて

0

有効期限によって注文された注文セットを使用したい場合があります。その後、最初の要素を定期的にチェックし、満了するとそれを削除します。その後、新しい最初の要素を再度チェックし、期限切れの場合は削除します。 (現在の)最初の要素が期限切れになるまで(そして期限切れ時間によるソートのために、他の要素もすべて期限切れにならないように)繰り返されます。

Quartzのようなスケジューラやタイマーを使用することをお勧めします。

+0

ありがとうございます。私はスケジューラを使いたいです。だから私はいくつかの読書を行い、それを実装しようとします。 – user1180969

+0

@ user1180969アプリケーションがJBoss、Glassfishな​​どのアプリケーションサーバー上で動作している場合、おそらくすでにスケジューラ(QuartzはJBoss用)にアクセスしている可能性があります。 – Thomas

0

イテレータを使用して、セット内のすべての要素を反復処理し、古い有効期限のある要素を削除します。削除したトークンへの参照がない場合、Java Garbage Collectorは実行時にメモリからそれらを消去します。

Date now = new Date(); 
    Set<Token> tokenSeen = new HashSet<Token>(); 
    Iterator<Token> iterator = tokenSeen.iterator(); 
    while (iterator.hasNext()) { 
    Token token = iterator.next(); 
    if(token.expirationtime.before(now)) 
     iterator.remove(); 
    } 
+0

私は上記のような解決策を考えていました。しかし、私は本当にスケジューラを使うことを望んでいました。 – user1180969

+0

あなたはどこからでもこのコードをトリガすることができます。これはセットをトラバースし、それぞれのアイテムを 'Javaコードで削除する 'コードです。 – melihcelik

0

あなたは要素の期限が切れているのを追跡するためにDelayQueueを設定し、それらを削除することができるかもしれません。

関連する問題