2013-05-31 39 views
0

這是一個愚蠢的問題,但我似乎無法在網上找到答案。沒有thread.sleep石英必須匹配我的時間表的時間?

如果是早上9點,我在中午12點安排工作,是否需要將我的thread.sleep設置爲3小時?

換句話說,如果我將我的thread.sleep設置爲5分鐘,並按照sched.shutdown(true)繼續,我的工作是否仍會在中午執行?或者調度程序是否已經關閉?我沒有得到thread.sleep的意見...有人可以澄清?僅在示例代碼

try { 

      SchedulerFactory sf = new StdSchedulerFactory(); 
      Scheduler sched = sf.getScheduler(); 

      JobDetail job = newJob(HelloWorld.class) 
          .withIdentity("job0","group1") 
          .build(); 

      CronTrigger trigger = newTrigger() 
       .withIdentity("trigger1", "group1") 
       .withSchedule(cronSchedule("0 0 12 ? 1-12 2-6")) 
       .build(); 
      sched.scheduleJob(job,trigger); 

      sched.start(); 

      Thread.sleep(300000L); //300000 milliseconds is 5 minutes 
      sched.shutdown(true); 

    } catch (SchedulerException ex) { 
     Logger.getLogger(IBTradeGui.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+0

你的意思是你睡在你的主要方法或類似的方面,這樣你的應用程序不會終止?如果你的程序停止了,那麼這個作業將不會運行。 – darrenmc

+0

@darrenmc根據文檔,你應該在啓動後睡覺線程,以便作業有時間執行。我不明白這是否意味着睡眠線程,直到工作按計劃進行,或者只是休眠幾分鐘,以便它可以在關閉之前在調度程序中註冊。我添加了代碼來顯示我的'thread.sleep'出現在哪裏。我使用'Swing',並且我的try/catch塊在按下按鈕時發生的方法中。我的'thread.sleep'只在該按鈕的方法中,如果這有幫助... –

+0

我認爲睡眠只在示例代碼中演示石英。這不是我在生產代碼中做的事情。我認爲最好在應用程序初始化時啓動調度程序,並在應用程序關閉時停止它。調度作業然後在程序的其他部分處理。 – darrenmc

回答

1

睡眠是展示石英:

EDIT添加的代碼。這不是生產代碼中的事情。

當您的應用程序關閉時,最好在應用程序初始化時啓動調度程序並將其停止。調度作業然後在程序的其他部分處理。