DelayQueue は、遅延が期限切れになった場合にのみ要素を抽出できる無制限のブロッキング キューです。キューの先頭は、遅延の期限が切れた後、最長の時間を保持する Delayed 要素です。
DelayQueue ブロッキング キューは、システム開発でもよく使用されます。たとえば、キャッシュ システムの設計では、タスク スケジューリング システムが許可するアイドル時間を超えた後、キャッシュ内のオブジェクトをキャッシュから削除する必要があります。タスクの実行時間を正確に把握します。通常のスレッドを使用する場合、タイム クリティカルな大量のデータを処理する必要がある場合、すべてのオブジェクトを走査して、データの有効期限が切れていないかどうかを 1 つずつ確認する必要があります。第二に、この設計スタイルはデータの精度にも大きく影響します。 12:00 に実行する必要があるタスクは、12:01 まで実行できない可能性があります。これは、データ要件が高いシステムにとっては大きなデメリットとなります。これから DelayQueue を使用することができます。
呼び出し動作を行うには、DelayDeque に格納されている要素は Delayed インターフェースを実装する必要があります。 Delayed インターフェイスはオブジェクトを遅延オブジェクトにし、DelayQueue クラスに格納されているオブジェクトにアクティブ化日を与えます。このインターフェイスは、次の 2 つのメソッドを強制します。
CompareTo(Delayed o):Delayed接口继承了Comparable接口,因此有了这个方法。 getDelay(TimeUnit unit):这个方法返回到激活日期的剩余时间,时间单位由单位参数指定。
遅延インターフェイスを実装します
このコード: 契約が署名された後の実行時間を現在時刻と比較して、その時点での契約の自動実行を実現します。
スレッドが開始し、DelayQueueが動作を開始します
スプリングブートがロードを開始し、データソースを初期化し、シングルスレッドを開始します
記録を残しましょう!
関連する推奨事項:
Java スレッドプログラミングにおけるブロックキューコンテナーの深い理解
同時パケットブロックキューの ArrayBlockingQueue
以上がJAVA での DelayQueue の使用: ブロッキング キュー、遅延キューの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。