JavaのLinkedBlockingDequeでタイムアウトを設定する方法は何ですか?

LinkedBlockingDequeクラスは、Javaでの双方向リンクリストを使用したブロッキングキューであり、生産者-消費者モデルを実装するために使用できる。LinkedBlockingDequeクラスには直接のタイムアウト設定方法が提供されていないが、take()とpoll()メソッドを使用してタイムアウトを実装できる。

  1. take()メソッドを使用すると、要素が消費可能になるまでブロックされます。InterruptedException例外をキャッチして、キャッチブロック内でタイムアウトロジックを設定できます。
try {
    T element = deque.take();  // 阻塞直到队列非空
    // 处理队列元素
} catch (InterruptedException e) {
    // 超时逻辑
}
  1. poll()メソッドを使用すると、キューの先頭から要素を取得して削除し、キューが空の場合はnullが返されます。InterruptedException例外をキャッチするためにtry-catchブロックをpoll()メソッドで使用し、catchブロックでタイムアウトロジックを設定することができます。
try {
    T element = deque.poll(timeout, TimeUnit.MILLISECONDS);  // 阻塞timeout毫秒直到队列非空
    if (element != null) {
        // 处理队列元素
    } else {
        // 超时逻辑
    }
} catch (InterruptedException e) {
    // 超时逻辑
}

timeoutとは、タイムアウトまでの待機時間であり、TimeUnit.MILLISECONDSは時間の単位であり、必要に応じて適切な時間の単位を選択できます。指定されたタイムアウト時間内にキューに利用可能な要素がない場合、タイムアウトロジック処理がトリガーされます。

bannerAds