如何设置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);
}
}
结果:
510
15
以上是 如何设置DelayQueue的延迟 的全部内容, 来源链接: utcz.com/qa/406806.html