使用执行器框架还是普通线程?

Raj*_*Raj 1 java multithreading executors scheduledexecutorservice

最近我得到了一个面试问题:

有一种情况,一个线程在一小时的间隔内执行批处理操作,你会使用执行框架或普通线程,为什么?

我很迷惑 .

由于只有一个线程,因此不需要执行程序服务.我可以使用whilesleep.

while(1)
{
// do task
// t1.sleep(60*60*1000);
}
Run Code Online (Sandbox Code Playgroud)

虽然有一个ScheduleExecutorService,它提供了许多方法来进行调度?

什么是最好的方法?

Bri*_*new 6

上述解决方案的问题在于,如果您的任务需要59分钟,那么您的线程将花费59分钟执行您的任务,然后睡眠一小时.所以你每隔(差不多)2小时调用一次你的任务.

如果您使用的安排执行程序框架,那么会每隔一小时调用你的任务后,看一小时(不管需要多长时间).另请注意,它可以处理任务执行超过一小时的情况(无论是设计还是偶然).您可以选择并行启动第二个任务,也可以跳过后续调用.

我通常会使用执行程序框架.它提供了许多有用的功能,您可以封装您的任务,使它们不仅必须在计划的执行程序中运行,而且还必须在任何执行程序中运行.