黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Java隊(duì)列

Java延遲隊(duì)列

DelayQueue 實(shí)現(xiàn) BlockingQueue 接口。 DelayQueue 中的元素必須保留一定的時(shí)間。

DelayQueue 使用一個(gè)名為 Delayed 的接口來獲取延遲時(shí)間。

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

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

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

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

當(dāng) getDelay()方法返回一個(gè)零或一個(gè)負(fù)數(shù)時(shí),是元素離開隊(duì)列的時(shí)間。

隊(duì)列通過調(diào)用元素的 compareTo()方法確定要彈出的那個(gè)。 此方法確定要從隊(duì)列中刪除的過期元素的優(yōu)先級(jí)。

以下代碼顯示了如何使用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.");
  }
}

上面的代碼生成以下結(jié)果。

全部教程
主站蜘蛛池模板: 国内偷自视频区视频综合 | 任你躁欧美一级在线精品 | 成人h视频在线观看 | 三区在线视频 | 黄色在线观看免费 | 色爱区综合激情五月综合激情 | 日韩视频区 | 男女交性过程视频无遮挡在线 | 黑丝写真| 免费播放国产性色生活片 | 国产专区在线视频 | 久久成人国产精品 | 意大利xxxx性hd极品 | 日韩城人网站 | 亚洲一区二区三区高清不卡 | 国产色噜噜 | 色天使色婷婷丁香久久综合 | 亚洲欧美日韩高清中文在线 | 亚洲国产日韩在线观频 | 成年人免费在线看 | 亚洲欧美日韩国产精品网 | 成人在线视频在线观看 | 午夜成人免费影院 | 天天天天天天操 | 97免费视频在线 | 毛片a级三毛片免费播放 | 免费在线你懂的 | 日韩理论片| 一个人在线看的www视频 | 日韩精品一区二区三区中文 | 欧美日韩一二三区 | 亚洲国产成人最新精品资源 | 国产日产欧产精品精品推荐在线 | 国产免费又爽又黄又刺激的视频 | 黄网站视频在线观看 | 亚洲免费黄色 | 久久亚洲精品永久网站 | 福利社看片 | 亚洲欧美一区二区三区图片 | 国产精品国产三级国产在线观看 | 成人欧美一区二区三区视频 |