【问题标题】:ScheduledExecutorService starting late every timeScheduledExecutorService 每次启动都很晚
【发布时间】:2011-08-27 08:24:07
【问题描述】:

我正在编写一小段具有 ScheduledExecutorService 的代码。

为此,我有以下代码:

Calendar fileTimestamp = Calendar.getInstance(); fileTimestamp.setTime(fileObj.getDateToCopy());

ScheduledExecutorService fileDispatcher = Executors.newScheduledThreadPool(5);
CopyTask  copyTask = new CopyTask();
long schedulerTrigger = fileTimestamp.getTimeInMillis() -   Calendar.getInstance().getTimeInMillis();

System.out.println("***[MAIN-INFO]["+fileObj.getFile_id()+"] fileTimeStamp:"+fileTimestamp.getTime());

System.out.println("***[MAIN-INFO]["+fileObj.getFile_id()+"] now
            TimeStamp:"+Calendar.getInstance().getTime()); 
System.out.println("[MAIN-INFO]["+fileObj.getFile_id()+"]
             scheduledTrigger [hh:mm:ss]: 
             "+formatDateDiff(schedulerTrigger) );
ScheduledFuture<?>  result = fileDispatcher.schedule(copyTask,
             schedulerTrigger, TimeUnit.MILLISECONDS);

当我们达到时间戳时,我必须执行 copyTask。 问题是 copyTask 执行得很晚:每次延迟大约 3 分钟。 以下是消息:

***[MAIN-INFO][401850] fileTimeStamp:Tue May 17 17:09:38 CEST 2011
***[MAIN-INFO][401850] now TimeStamp:Tue May 17 17:07:38 CEST 2011
[MAIN-INFO][401850] scheduledTrigger [hh:mm:ss]:  0:2:0 (120000 ms) 

正在运行的任务的消息:

[401850-INFO] Launch time:Tue May 17 17:09:38 CEST 2011
[401850-INFO] Current time:Tue May 17 17:12:04 CEST 2011
[401850-INFO] Start copying FILE_ID=401850
[401850-INFO] Copy file OK

目前我在 CopyTask 中有这段代码:

public void run() {   

   System.out.println("["+taskId+"-INFO] Current time:"+new Date());
}

我们可以看到启动时间(作业必须运行的时间)和当前时间(作业执行的实际时间)是不一样的。

有人知道为什么这么晚吗?

【问题讨论】:

    标签: java timer scheduled-tasks


    【解决方案1】:

    忘记它。 现在它似乎工作了。我不知道为什么,因为我什么都没做。

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多