Java的scheduleWithFixedDelay方法是用于创建一个周期性执行的任务。它接受一个Runnable对象作为参数,而不是FutureTask对象,有以下几个原因:
- 简单性:Runnable是Java中最基本的任务接口,只有一个run方法需要实现。相比之下,FutureTask是一个更复杂的类,它实现了Runnable和Future接口,需要更多的代码来使用和管理。
- 可扩展性:使用Runnable作为参数,可以方便地扩展和重用现有的任务实现。如果使用FutureTask,就需要在任务实现中继承FutureTask类,限制了任务的扩展性。
- 任务执行结果:scheduleWithFixedDelay方法返回一个ScheduledFuture对象,用于管理任务的执行和获取结果。由于Runnable没有返回值,所以不需要使用FutureTask来包装任务。
总结起来,使用Runnable作为参数可以简化代码,提高可扩展性,并且符合任务执行的特点。对于需要获取任务执行结果的情况,可以使用Callable接口来代替Runnable,并使用ExecutorService的submit方法来提交任务。