ScheduledExecutorService запускается каждый раз поздно - PullRequest
1 голос
/ 17 мая 2011

Я работаю над небольшим фрагментом кода, который имеет 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());
}

Мы видим, что время запуска (время, когда задание должно выполняться) не совпадает с текущим временем (в реальном времени, когда задание выполняется).

Кто-нибудь знает, почемутак поздно?

1 Ответ

0 голосов
/ 17 мая 2011

Забудьте об этом.Теперь это похоже на работу.Я не знаю почему, потому что я ничего не сделал.

...