Java 计划好的未来与未来——最大的区别是什么?

Java 计划好的未来与未来——最大的区别是什么?,java,Java,ExecutorService接口的submit()方法返回接口Future(实际上我认为FutureTask类),而接口ScheduledExecutorService的schedule()方法返回ScheduledFuture接口(实际上我不知道是哪个类,可能是同一个FutureTask) 唯一的区别是ScheduledFuture还实现了延迟接口,并具有getDelay方法 但主要的想法是什么?为什么ScheduledExecutorService使用的是ScheduledFuture而不

ExecutorService接口的submit()方法返回接口Future(实际上我认为FutureTask类),而接口ScheduledExecutorService的schedule()方法返回ScheduledFuture接口(实际上我不知道是哪个类,可能是同一个FutureTask)

唯一的区别是ScheduledFuture还实现了延迟接口,并具有getDelay方法


但主要的想法是什么?为什么ScheduledExecutorService使用的是ScheduledFuture而不仅仅是Future?

ScheduledFuture
还实现了
Delayed
接口,该接口具有以下方法:

long getDelay(TimeUnit unit);
Javadoc说:

返回与此对象关联的剩余延迟,以 给定的时间单位

因此,您可以获得此
延迟
。因此,实现此接口的任务具有此
延迟
属性,对于executor,这意味着在延迟过去之前无法执行此任务,同时
未来
不具有此属性,可以在threadpool(或您使用的任何执行者)准备好执行它后执行