大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Java隊列

Java延遲隊列

DelayQueue 實現 BlockingQueue 接口。 DelayQueue 中的元素必須保留一定的時間。

DelayQueue 使用一個名為 Delayed 的接口來獲取延遲時間。

該接口在java.util.concurrent包中。 其聲明如下:

public interface  Delayed  extends Comparable  {
   long  getDelay(TimeUnit timeUnit);
}

它擴展了 Comparable 接口,它的 compareTo()方法接受一個Delayed對象。

DelayQueue 調用每個元素的 getDelay()方法來獲取元素必須保留多長時間。 DelayQueue 將傳遞 TimeUnit 到此方法。

當 getDelay()方法返回一個零或一個負數時,是元素離開隊列的時間。

隊列通過調用元素的 compareTo()方法確定要彈出的那個。 此方法確定要從隊列中刪除的過期元素的優先級。

以下代碼顯示了如何使用DelayQueue。

import static java.time.temporal.ChronoUnit.MILLIS;
import static java.util.concurrent.TimeUnit.MILLISECONDS;

import java.time.Instant;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.DelayQueue;
import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;

class DelayedJob implements Delayed {
  private Instant scheduledTime;
  String jobName;

  public DelayedJob(String jobName, Instant scheduledTime) {
    this.scheduledTime = scheduledTime;
    this.jobName = jobName;
  }

  @Override
  public long getDelay(TimeUnit unit) {
    long delay = MILLIS.between(Instant.now(), scheduledTime);
    long returnValue = unit.convert(delay, MILLISECONDS);
    return returnValue;
  }

  @Override
  public int compareTo(Delayed job) {
    long currentJobDelay = this.getDelay(MILLISECONDS);
    long jobDelay = job.getDelay(MILLISECONDS);

    int diff = 0;
    if (currentJobDelay > jobDelay) {
      diff = 1;
    } else if (currentJobDelay < jobDelay) {
      diff = -1;
    }
    return diff;
  }

  @Override
  public String toString() {
    String str = this.jobName + ", " + "Scheduled Time:  "
        + this.scheduledTime;
    return str;
  }
}
public class Main {
  public static void main(String[] args) throws InterruptedException {
    BlockingQueue queue = new DelayQueue<>();
    Instant now = Instant.now();

    queue.put(new DelayedJob("A", now.plusSeconds(9)));
    queue.put(new DelayedJob("B", now.plusSeconds(3)));
    queue.put(new DelayedJob("C", now.plusSeconds(6)));
    queue.put(new DelayedJob("D", now.plusSeconds(1)));

    while (queue.size() > 0) {
      System.out.println("started...");
      DelayedJob job = queue.take();
      System.out.println("Job: " + job);
    }
    System.out.println("Finished.");
  }
}

上面的代碼生成以下結果。

全部教程
主站蜘蛛池模板: 久久线看观看精品香蕉国产 | 一级骚片超级骚在线观看 | 久久伊| 被公侵犯肉体中文字幕一区二区 | 久久综合九色综合97婷婷女人 | 亚洲综合激情六月婷婷在线观看 | 免费一级特黄特色黄大任片 | 精品一区二区三区在线成人 | 日产国语一区二区三区在线看 | 在线视频 中文字幕 | 国产综合久久 | 国产成人一区二区三区在线播放 | 色婷婷精品大视频在线蜜桃视频 | 国产高清美女一级a毛片久久w | 欧美专区在线观看 | 97婷婷狠狠成人免费视频 | 日本免费不卡视频一区二区三区 | 毛片短视频 | 伊人网色| 久久久高清 | 亚洲区精品久久一区二区三区 | 大学生一级毛片高清版 | 深夜精品寂寞在线观看黄网站 | 国产极品嫩模大尺度福利视频 | 国产高清专区 | 一级黄色免费毛片 | 狠狠色噜噜狠狠狠狠黑人 | 久久最近最新中文字幕大全 | 亚洲欧美二区三区久本道 | 91久久国产综合精品女同国语 | 九七97影院理论片手机在线观看 | 98色花堂国产精品首页 | 男人的网站在线观看 | 色综合成人网 | 久久婷婷一区二区三区 | 欧美日韩久久毛片 | 久久精品视频在线播放 | 天天翘夜夜洗澡天天做 | 九九99靖品 | 日本精品视频在线 | 国产精品久久久久无毒 |