1. 程式人生 > >【Java】延遲佇列DelayQueue裡的坑 concurrent.Delayed

【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 被執行多次