小编nho*_*hoj的帖子

java.util.concurrent.DelayQueue可以忽略过期的元素

下面的Java代码示例使用java DelayQueue来处理任务.但是,从另一个线程插入任务似乎会破坏(我的)预期行为.

抱歉代码示例如此之长,但总结如下:

  1. 主线程向DelayQueue添加5个任务(AE),具有各种延迟(0ms,10ms,100ms 1000ms,10000ms)
  2. 启动另一个步骤,在3000ms后向DelayQueue添加另一个任务
  3. 主线程轮询DelayQueue并报告每个任务到期
  4. 在8000ms之后,主线程报告DelayQueue中剩余的任务

我从代码示例中获得的输出是:

------initial tasks ---------------
task A due in 0ms
task B due in 9ms
task C due in 99ms
task D due in 999ms
task E due in 9999ms
task F due in 99999ms
------processing--------------------
time = 5    task A due in -1ms
time = 14   task B due in 0ms
time = 104  task C due in 0ms
time = 1004 task D due in 0ms
time = 3003 added task …
Run Code Online (Sandbox Code Playgroud)

java multithreading priority-queue

6
推荐指数
2
解决办法
3529
查看次数

标签 统计

java ×1

multithreading ×1

priority-queue ×1