2015-07-13 66 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秒结束。