2015-07-13 97 views
0

我試圖用JAVA創建一個cronjob應用程序。 我正在使用Quartz Scheduler插件。一切都很好看,但我必須找出一種方法來停止/暫停它,然後重新啓動它。石英調度程序啓動和停止按鈕

我使用Swing和帶有兩個按鈕的系統托盤創建了一個GUI。停止並開始。 「開始」按鈕正常工作,並啓動調度程序輸出所需的結果。但是,我不能右鍵單擊菜單圖標以在系統托盤上彈出,直到計劃程序關閉。

下面是啓動的cronjob

public static void startCron(String serverAddress, int interval) throws Exception { 

     JobDetail job = JobBuilder.newJob(RunCron.class).withIdentity("mainCron", "group1").build(); 

     // Trigger the job to run on the next round minute 
     Trigger trigger = TriggerBuilder 
      .newTrigger() 
      .withIdentity("dummyTriggerName", "group1") 
      .withSchedule(
       SimpleScheduleBuilder.simpleSchedule() 
        .withIntervalInSeconds(interval).repeatForever()) 
      .build(); 


     // schedule it 
     Scheduler scheduler = new StdSchedulerFactory().getScheduler(); 
     scheduler.start(); 
     scheduler.scheduleJob(job, trigger); 

     try { 
      Thread.sleep(8000);     //1000 milliseconds is one second. 
      scheduler.shutdown(); 
      System.out.println("System was shut down"); 
     } catch(InterruptedException ex) { 
      Thread.currentThread().interrupt(); 
     } 

    } 

的cronjob僅僅是一個HTTP請求到服務器和響應功能。 我有一個睡眠和8秒鐘後關機,以防止永不結束的執行,因爲GUI在作業運行時沒有響應。

+0

我不是一個石英專家,但我會說'Thread.sleep(8000);'在8秒結束之前阻止你的應用程序處理任何輸入。 – BetaRide

+0

你是對的!我用它來防止它永遠運行!相當新的Java。儘管當我嘗試關閉它時,我仍然收到異常 – LefterisL

回答

0

Thread.sleep(8000);阻止您的應用程序處理任何輸入,直到8秒結束。