1. 程式人生 > >java編程式控制quartz Scheduler 啟動和停止,無法停止的問題解決

java編程式控制quartz Scheduler 啟動和停止,無法停止的問題解決

在專案中需要手動啟停某些服務,那麼需要有一個控制這些任務的類。由於任務是有Quartz控制的,我們只需要通過Quartz的相關的API實現相關的功能即可。

      在spring 配置中把自啟動關閉就可以用了

<bean id=""
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
autowire="no">
<property name="triggers">
<list>
<ref local="collectrCronTrigger" />
</list>
</property>
<property name="autoStartup">
<value>false</value>
</property>
</bean>

Java程式碼  收藏程式碼
  1. package com.easyway.app.quartz.mgr;  
  2. import java.util.Date;  
  3. import java.util.List;  
  4. import java.util.Map;  
  5. import org.quartz.JobDataMap;  
  6. import org.quartz.JobDetail;  
  7. import org.quartz.JobKey;  
  8. import org.quartz.Scheduler;  
  9. import org.quartz.SchedulerException;  
  10. import org.quartz.SchedulerFactory;  
  11. import org.quartz.Trigger;  
  12. import org.quartz.TriggerKey;  
  13. import org.quartz.impl.StdSchedulerFactory;  
  14. import org.quartz.impl.matchers.GroupMatcher;  
  15. /** 
  16.  * 一個簡單的quartz工作管理員 
  17.  * @author longgangbai 
  18.  * 
  19.  */  
  20. public class QuartzScheduleMgr {  
  21.     private
     static  Scheduler scheduler=getScheduler();  
  22.     /** 
  23.      * 建立一個排程物件 
  24.      * @return 
  25.      * @throws SchedulerException 
  26.      */  
  27.     private static Scheduler getScheduler() {  
  28.             SchedulerFactory sf = new StdSchedulerFactory();  
  29.             Scheduler scheduler=null;  
  30.             try {  
  31.                 scheduler = sf.getScheduler();  
  32.             } catch (SchedulerException e) {  
  33.                 e.printStackTrace();  
  34.             }  
  35.             return scheduler;  
  36.     }  
  37.     public static Scheduler getInstanceScheduler(){  
  38.         return scheduler;  
  39.     }  
  40.     /** 
  41.      * 啟動一個排程物件 
  42.      * @throws SchedulerException 
  43.      */  
  44.     public  void start() throws SchedulerException  
  45.     {   
  46.         scheduler.start();  
  47.     }  
  48.     /** 
  49.      * 檢查排程是否啟動 
  50.      * @return 
  51.      * @throws SchedulerException 
  52.      */  
  53.     public  boolean isStarted() throws SchedulerException  
  54.     {  
  55.         return scheduler.isStarted();  
  56.     }  
  57.     /** 
  58.      * 關閉排程資訊 
  59.      * @throws SchedulerException 
  60.      */  
  61.     public  void shutdown() throws SchedulerException   {  
  62.         scheduler.shutdown();  
  63.     }  
  64.     /** 
  65.      * 新增排程的job資訊 
  66.      * @param jobdetail 
  67.      * @param trigger 
  68.      * @return 
  69.      * @throws SchedulerException 
  70.      */  
  71.     public  Date scheduleJob(JobDetail jobdetail, Trigger trigger)  
  72.             throws SchedulerException{  
  73.                 return scheduler.scheduleJob(jobdetail, trigger);   
  74.     }  
  75.     /** 
  76.      * 新增相關的觸發器 
  77.      * @param trigger 
  78.      * @return 
  79.      * @throws SchedulerException 
  80.      */  
  81.     public  Date scheduleJob(Trigger trigger) throws SchedulerException{  
  82.         return scheduler.scheduleJob(trigger);  
  83.     }  
  84.      /** 
  85.       * 新增多個job任務 
  86.       * @param triggersAndJobs 
  87.       * @param replace 
  88.       * @throws SchedulerException 
  89.       */  
  90.      public  void scheduleJobs(Map<JobDetail, List<Trigger>> triggersAndJobs, boolean replace) throws SchedulerException  
  91.      {  
  92.         scheduler.scheduleJobs(triggersAndJobs, replace);  
  93.     }  
  94.     /** 
  95.      * 停止排程Job任務 
  96.      * @param triggerkey 
  97.      * @return 
  98.      * @throws SchedulerException 
  99.      */  
  100.     public  boolean unscheduleJob(TriggerKey triggerkey)  
  101.             throws SchedulerException{  
  102.         return scheduler.unscheduleJob(triggerkey);  
  103.     }  
  104.     /** 
  105.      * 停止排程多個觸發器相關的job 
  106.      * @param list 
  107.      * @return 
  108.      * @throws SchedulerException 
  109.      */  
  110.     public  boolean unscheduleJobs(List<TriggerKey> triggerKeylist) throws SchedulerException{  
  111.         return scheduler.unscheduleJobs(triggerKeylist);  
  112.     }  
  113. 相關推薦

    java程式控制quartz Scheduler 啟動停止,無法停止的問題解決

    在專案中需要手動啟停某些服務,那麼需要有一個控制這些任務的類。由於任務是有Quartz控制的,我們只需要通過Quartz的相關的API實現相關的功能即可。       在spring 配置中把自啟動關閉就可以用了 <bean id="" class

    程式碼控制Quartz啟動停止

    Spring中如何使用Quartz就不必說了,這裡說說如果動態設定cron。 這個要解決3個問題: 1.將使用者輸入轉換為Cron表示式 2.安全的重啟quartz 3.程式啟動的時候,從資料庫中讀取cron(而非spring配置檔案中寫死的那個)。 因為derpvail急著用,

    【並發程】程序的啟動終結

    獨立 fec 區分 pan image tar 停止 實例化 -i Android是一個多用戶。多任務的系統。同意多個app在同一時刻執行,在多個程序之間切換並不會有明顯的延遲。多任務是由Linux內核負責處理的,而程序的執行基於Linux進程。Linux進程Linux為

    使用Java進行udp-demo程時碰到的consumerproducter無法連接並報出“java.net.SocketException: Can't assign requested address”問題

    ons col 添加 使用 native 啟動參數 tag res strac 在用Java編寫了一個udp生產者和消費者的demo時,在生產者啟動的時候會拋出異常 java.net.SocketException: Can‘t assign requested addr

    動態新增控制元件導致weightheight失效的解決方法

    1 /** 2 * <p>Adds a child view. If no layout parameters are already set on the child, the 3 * default parameters for this ViewGroup are

    vs2017啟動iis區域網無法訪問解決

    1.找到IISExpress的配置檔案,位於 <文件>/IISExpress/config資料夾下,開啟applicationhost.config,找到如下程式碼: <site name="WebSite1" id="1" serverAutoStart="true"> <a

    Java程式結構、if-elseswitch條件選擇、for與while與do-while迴圈及beakcontinue控制跳轉語句

    Java程式的流程控制 Java流程控制提供了控制程式的基本手段,使得程式能夠按照正確的順序逐步執行,以實現特定的功能。Java流程控制結構分為:順序結構、選擇結構、迴圈結構。 順序結構 Java應用程式都是從main()方法開始執行的。程式一般是按照書寫順序依次向下執行,直

    java-啟動關閉.exe程式

    連結: https://www.cnblogs.com/pengpengzhang/p/8675740.html https://blog.csdn.net/ZHANGHUI3239619/article/details/78808129 例: // 啟用exe客戶端 @RequestM

    Java網絡程【Socket服務端客戶端】

    rgs .net aio highlight 如果 org author oid try Socket 編程大家都不陌生,Java 學習中必學的部分,也是 Java網絡編程核心內容之一。Java 網絡編程又包括 TCP、UDP,URL 等模塊。TCP 對應 Socket

    Java中的線程狀態轉換線程控制常用方法

    img sta () throw line star height style 技術 Java 中的線程狀態轉換:    【註】:不是 start 之後就立刻開始執行, 只是就緒了(CPU 可能正在運行其他的線程). 【註】:只有被 CPU 調度之後,線程才開始執行, 當

    Java多線程程:Callable、FutureFutureTask淺析

    創建線程 執行 過程 data- body javase 接下來 而後 定義 通過前面幾篇的學習,我們知道創建線程的方式有兩種,一種是實現Runnable接口,另一種是繼承Thread,但是這兩種方式都有個缺點,那就是在任務執行完成之後無法獲取返回結果,那如果我們想要獲取返

    Java並發程:Callable、FutureFutureTask

    done 泛型 new row run new t com 取消 底層 在前面的文章中我們講述了創建線程的2種方式,一種是直接繼承Thread,另外一種就是實現Runnable接口。這2種方式都有一個缺陷就是:在執行完任務之後無法獲取執行結果。如果需要獲取執行結果,就必須通

    java程基礎(三)流程控制語句

    數據類型 char 格式 條件 -i es2017 else語句 運算 編程 流程控制語句 1.順序語句: 語句:使用分號分隔的代碼成為一條語句。 註意:沒有代碼,只有一個分號也是一條語句。 順序語句就是按照從上到下的順序依次執行的語句 2. if判斷語句 if語句

    java----調用windows的DOS命令並回顯/啟動關閉appium

    學習記錄/** * Java調用windows的DOS命令 * 實現調用Windows的ipconfig命令,然後將輸出的信息通過IO流輸出到控制臺。 * 實現啟動appium服務 * 實現關閉appium服務 */ public class Doc { public static

    java程式語言還是解釋性語言

    自己 意義 ava ges 最終 優化 fortran 編譯型 .com 一、你可以說它是編譯型的。因為所有的Java代碼都是要編譯的,.java不經過編譯就什麽用都沒有。 二、你可以說它是解釋型的。因為java代碼編譯後不能直接運行,它是解釋運行在JVM上的,所以

    Java程思想(六、訪問權限控制

    而不是 包含 得到 獲取 開發 變量 平臺 世界 類的繼承   訪問控制(或隱藏具體實現)與“最初的實現並不恰當”有關。便於未來重構代碼,而不必對業務層做過多的改變。因此,Java提供了訪問控制修飾詞,以供類庫開發人員向客戶端程序員指明哪些是可用的,哪些是不可用的。   訪

    Java程思想第4版官方完整版及官方習題課後答案(codepdf)

    body post gpo pdf 課後答案 第4版 ava blog class Java編程思想第4版官方完整版及官方習題課後答案(code和pdf) Java編程思想第4版官方完整版及官方習題課後答案(code和pdf) Java編程思想第4版官方完整版及官方習題課後

    Centos7.3_x86_64通過systemctl控制tomcat8.0.46啟動停止

    oca apache port 服務的啟動 編輯 根目錄 add load rip Centos7.3_x86_64通過systemctl控制tomcat8.0.46啟動和停止 之前在centos 6上通過腳本控制tomcat 啟動和停止的腳本,雖然在cent

    spring中程式事務控制

    intra ans res ren nbsp new temp class 進行 step1:配置xml文件 1 <!-- 事務管理bean --> 2 <bean id="transactionManager" class="org.sprin

    Java 並發程——Executor框架線程池原理

    ignore 程序管理 on() explicit 開發 抽象類 bool i++ RR Eexecutor作為靈活且強大的異步執行框架,其支持多種不同類型的任務執行策略,提供了一種標準的方法將任務的提交過程和執行過程解耦開發,基於生產者-消費者模式,其提交任務的線程相當於