【Java】延迟队列DelayQueue里的坑 concurrent.Delayed

使用延迟队列需要实现Delayed接口
重要的是此接口方法
@Override
    public long getDelay(TimeUnit unit) {
        System.err.println(num++);
        return unit.convert(fireTime - System.currentTimeMillis(), TimeUnit.MILLISECONDS);
    }
如果 return convert 里使用纳秒  延迟队列延迟两秒钟取出  getDelay 会被执行9万多次  而使用毫秒只会被执行两次 
而网上的一些demo 写的都是纳秒,但我们实际用的时候 不会用到这么精确 就会导致getDelay 被执行多次


你可能感兴趣的:(Java后端)