2014-04-04 54 views
0

我正在編寫J2SE應用程序,其目的是每天向遠程服務器發送一定數量的請求。每天發送的請求數量有限,甚至每小時 - 每天100K請求& &每小時10K => aprox。每2.8秒1次請求。JAVA ScheduledExecutorService - 每天運行一次重複某個Job

我寫了一個示例程序,它每15秒打印一次 - 重複我使用ScheduledExecutorService & ScheduledFuture其中我指定了我的可運行,沒有啓動延遲,重複延遲= 15000,時間單位= MILLISECONDS。

在我測試的runnable中,我試圖模擬在循環中執行某些操作(只是簡單的println()和這些迭代之間的sleep(2800)) - 因爲我在執行任務之間有15秒的計劃任務,需要6次打印=> 6 * 2800 = 14000這是罰款高達15000.但正如我看到,當我睡覺它,下一個15000毫秒後應該發生的任務發生後實際發生:14000毫秒+ 15000毫秒。我想這個睡眠(2800)對它有一定的影響。

正如我所說的,我需要重複某些請求每天發送一次,發送之間有一段時間的延遲 - 但不要接觸下一個24小時後執行此任務。我怎麼能做到這一點?

使用:ScheduledFuture,ScheduledExecutorService的,的ThreadFactory

如果有人能幫助這裏是我的代碼https://db.tt/vznt4PWG,它的一個Eclipse項目。

回答

0

解決方案:

ScheduledExecutorService scheduledExecutor = Executors.newSingleThreadScheduledExecutor(new  ThreadFactory() { 

     @Override 
     public Thread newThread(Runnable runnable) { 
      return new Thread(runnable, "MY_REPEATING_JOB"); 
     } 
}); 
Runnable jobToExecute = new MyJob(); 
scheduledExecutor.scheduleWithFixedDelay(jobToExecute, 0, 1, TimeUnit.NANOSECONDS); 

我在Runnablerun()控制方法等在內的MyJob - basicaly當一些操作結束我算差時間長達我要等待,而我呢sleep()這個時間。

任務正在重複執行,直到我在執行程序的代碼shutdown()中執行某處。

相關問題