我刚开始学习线程和并发包。了解到要使用 java.util.concurrent.DelayedQueue
,我们需要实现 java.util.concurrent.Delayed
接口,它有一个抽象方法 getDelay()。
long getDelay(TimeUnit unit)
以给定的时间单位返回与此对象关联的剩余延迟。
@Override
public long getDelay(TimeUnit unit) {
long diff = startTime - System.currentTimeMillis(); // long variable
return unit.convert(diff, TimeUnit.MILLISECONDS); // Not clear about this part which also returns long
}
getDelay方法只是获取毫秒差异,我相信我们可以从上面的diff变量中获取,那么为什么需要使用convert方法呢?convert方法说diff需要转换为毫秒(当它已经是毫秒时为什么还需要转换)?如果我理解不错,TimeUnit只是用于指定将其转换为毫秒。有人能帮助我更好地理解这个话题吗?
编辑-1
diff包含毫秒差异,并在下面的截图控制台中打印。尝试使用Timeunit的convert方法并在下面的控制台中打印出来,这两个值完全相同且都属于长整型。当两个值都相同并且是长整型时,为什么我需要使用这个额外的行呢?
unit.convert(diff, TimeUnit.MILLISECONDS);
不过,我也可以直接返回差异而不使用转换方法。