ScheduledExecutorService 定时任务调整系统时间的疑问

HostSugar 发布于 2014/09/26 12:10
阅读 1K+
收藏 0

看到 ScheduledExecutorService 介绍说不会由于系统时间的发生变化而影响执行。

写了一段测试程序,


public class ScheduledTaskDemo
{
    public static void main(String[] args)
    {
        ScheduledExecutorService scheduledService = new ScheduledThreadPoolExecutor(1);
        BusinessTask task = new BusinessTask();
        scheduledService.scheduleWithFixedDelay(task, 2000, 3000, TimeUnit.MILLISECONDS);
    }
    
    private static class BusinessTask implements Runnable
    {
        @Override
        public void run()
        {
            Calendar calendar = Calendar.getInstance();
            System.out.println(calendar.getTime().toLocaleString());
            System.out.println("business task start...");
            //do sth
            //throw new RuntimeException("要死啦要死啦,出异常了");
            System.out.println("...business task end");
            System.out.println();
        }
        
    }
}

window下执行定时任务,设置系统时间为过去时间,定时任务不受影响。

打jar包,放到Linux运行,设置系统时间为过去时间定时任务却停止不动了,ntpdate 同步正确时间后,又能正常执行。

请问有何解决方案?

加载中
返回顶部
顶部