如何设置DelayQueue的延迟

我刚开始用Java编写代码,我正努力设置DelayQueue,

我想这样

DelayQueue queue = new DelayQueue();

If (counter > 0){

queue.offer(Integer, *A custom delay*)

} Else {

queue.offer(Integer, *A different custom delay*)

}

我只是想学习所有的基础知识,并且从api上学到了内容,似乎无法掌握它。

提前致谢

回答:

DelayQueue直到一定的延时已经过期保持要素内部。元素必须实现接口java.util.concurrent.Delayed

例如,我创建了一个DelayedTest扩展Delayed接口的类。这将实现compareTo和getDelay()方法

public class A{

public static void main(String... args){

DelayQueue dq=new DelayQueue();

DeleyedTest ob1=new DeleyedTest(10);

DeleyedTest ob2=new DeleyedTest(5);

DeleyedTest ob3=new DeleyedTest(15);

dq.offer(ob1);

dq.offer(ob2);

dq.offer(ob3);

Iterator itr=dq.iterator();

while(itr.hasNext()){

DeleyedTest dt=(DeleyedTest)itr.next();

System.out.println(dt.deleyTime);

}

}

}

class DeleyedTest implements Delayed{

public long deleyTime=0;

DeleyedTest(long deleyTime){

this.deleyTime=deleyTime;

}

@Override

public int compareTo(Delayed ob) {

if(this.deleyTime<((DeleyedTest)ob).deleyTime){

return -1;

}else if(this.deleyTime>((DeleyedTest)ob).deleyTime){

return 1;

}

return 0;

}

@Override

public long getDelay(TimeUnit unit) {

return unit.convert(deleyTime-System.currentTimeMillis(),TimeUnit.NANOSECONDS);

}

}

结果:

5

10

15

以上是 如何设置DelayQueue的延迟 的全部内容, 来源链接: utcz.com/qa/406806.html

回到顶部