<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    gbk

    Quartz定時(shí)任務(wù)學(xué)習(xí)(四)調(diào)度器

    org.quartz.Scheduler 類層次

    QuartzFigure4.2.JPG

    作為一個(gè) Quartz 用戶,你要與實(shí)現(xiàn)了 org.quartz.Scheduler 接口的類交互。在你調(diào)用它的任何 API 之前,你需要知道如何創(chuàng)建一個(gè) Scheduler 的實(shí)例。取而代之的是用了某個(gè)工廠方法來確保了構(gòu)造出 Sheduler 實(shí)例并正確的得到初始化,Quartz 框架為這一目的提供了 org.quartz.SchedulerFactory 接口。角色 SchedulerFactory 就是用來產(chǎn)生 Scheduler 實(shí)例的。當(dāng) Scheduler 實(shí)例被創(chuàng)建之后,就會(huì)存到一個(gè)倉庫中(org.quartz.impl.SchedulerRepository),這個(gè)倉庫還提供了通過一個(gè) class loader 查詢實(shí)例的機(jī)制。要使用 Scheduler 實(shí)例,客戶端必須從工廠(和隨同的倉庫中)使用不同方法調(diào)用來獲取到它們。換句話說,要通過工廠創(chuàng)建一個(gè) Scheduler 實(shí)例并獲取到它需要經(jīng)由兩次方法調(diào)用。

    所有的 Scheduler 實(shí)例應(yīng)該由 SchedulerFactory 來創(chuàng)建

    QuartzFigure4.3.JPG

    使用 DirectSchedulerFactory 構(gòu)造實(shí)例方法代碼如下:

    DirectSchedulerFactory factory=DirectSchedulerFactory.getInstance();  
              try {  
                  // Initialize the Scheduler Factory with 10 threads  
                  factory.createVolatileScheduler(10);  

                  // Get a scheduler from the factory  
                  Scheduler scheduler = factory.getScheduler();

    方法 createVolatileScheduler() 方法不會(huì)返回 scheduler 的實(shí)例。createXXX() 方法是告訴工廠如何配置要?jiǎng)?chuàng)建的 Scheduler 實(shí)例。你必須調(diào)用方法 getScheduler() 獲取到在工廠上執(zhí)行方法 createXXX() 產(chǎn)生的實(shí)例。實(shí)際上,在調(diào)用 getScheduler() 方法之前,你必須調(diào)用其中一個(gè) createXXX() 方法;否則,你將有收到一個(gè) SchedulerException 錯(cuò)誤,因?yàn)楦緵]有 Scheduler 實(shí)例存在。
    方法 createVolatileScheduler() 帶有單個(gè)參數(shù):要?jiǎng)?chuàng)建的線程數(shù)量。

    使用 StdSchedulerFactory 構(gòu)造一個(gè)調(diào)度器實(shí)例,具體使用方法如下:

    StdSchedulerFactory factory = new StdSchedulerFactory();  

              // Create the properties to configure the factory  
              Properties props = new Properties();  

              // required to supply threadpool class and num of threads
              props.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS,"org.quartz.simpl.SimpleThreadPool");  
              props.put("org.quartz.threadPool.threadCount", "10");  
              try {  

                  // Initialize the factory with properties  
                  factory.initialize(props);  

                  Scheduler scheduler = factory.getScheduler();

    在這個(gè)例子中向工廠傳遞了兩個(gè)屬性,它們分別是實(shí)現(xiàn)了 org.quartz.spi.ThreadPool 接口的類名和 Scheduler 用來處理 Job 的線程的數(shù)量。這兩個(gè)屬性是必須的。但是我們也可以這樣的得到實(shí)例
    StdSchedulerFactory factory = new StdSchedulerFactory();
    Scheduler scheduler = factory.getScheduler();

    因?yàn)镾tdSchedulerFactory 工廠類會(huì)有個(gè)方法initialize()自動(dòng)去加載一些屬性配置,假如你使用無參的initialize() 方法,StdSchedulerFactory會(huì)取classpath下找到quartz.properties并加載。默認(rèn)不配置屬性時(shí)候會(huì)自動(dòng)加載quartz.properties文件的配置。

    使用靜態(tài)的 getDefaultScheduler() 方法創(chuàng)建 Scheduler

    使用 StdSchedulerFactory 來創(chuàng)建 Scheduler 實(shí)例的方式很普遍,因此在 StdSchedulerFactory 直接提供了一個(gè)方便的靜態(tài)方法 getDefaultScheduler(),它就是使用前面列出的幾個(gè)步驟來初始化工廠的。
    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

    在靜態(tài)方法 getDefaultScheduler() 方法中調(diào)用了空的構(gòu)造方法。假如之前未調(diào)用過任何一個(gè) initialize() 方法,那么無參的 initialize() 方法會(huì)被調(diào)用。這會(huì)開始去按照前面說的順序加載文件。默認(rèn)情況下,quartz.properties 會(huì)被定位到,并從中加載屬性。

    Scheduler 的功能

    Scheduler除了啟動(dòng)外,Scheduler操作包括查詢、設(shè)置 Scheduler 為 standby 模式、繼續(xù)、停止。啟動(dòng)Scheduler非常簡(jiǎn)單,只需要調(diào)用 start() 方法即可。只有在Scheduler 有實(shí)例或standby 模式才能調(diào)用start() 方法,一旦調(diào)用shutdown() 方法之后就不能在調(diào)用start() 方法。

    設(shè)置 Scheduler 為 standby 模式會(huì)導(dǎo)致 Scheduler 暫時(shí)停止查找 Job 去執(zhí)行,publicvoid standby() throws SchedulerException; standby 模式,Scheduler 不再試圖去執(zhí)行 Job,因?yàn)槟切┧褜ひ獔?zhí)行的 Job 的線程被暫停了下來。停止則調(diào)用無參的 shutdown() 方法相當(dāng)于調(diào)用 shutdown(false).

    posted on 2008-07-20 01:25 百科 閱讀(1530) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    My Links

    Blog Stats

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲春色在线观看| 亚洲色图在线观看| 亚洲国产无线乱码在线观看| 免费A级毛片无码视频| 亚洲gv白嫩小受在线观看| 一级做a爰片性色毛片免费网站| 成人亚洲综合天堂| 免费一级特黄特色大片| 亚洲?v无码国产在丝袜线观看| 久久亚洲精品成人无码| 波多野结衣视频在线免费观看 | 亚洲国产美国国产综合一区二区 | 成年性生交大片免费看| 亚洲精品123区在线观看| 成人免费毛片视频| 国产精品亚洲专区无码牛牛| 国产精品免费_区二区三区观看| 亚洲av无码兔费综合| 亚洲AV无码专区日韩| 久久国产美女免费观看精品| 亚洲码国产精品高潮在线| 久久国产精品国产自线拍免费| 亚洲AV无码成人精品区蜜桃| 3d动漫精品啪啪一区二区免费| avtt天堂网手机版亚洲| 最近中文字幕无吗高清免费视频| 亚洲小说图区综合在线| 亚洲国产精品不卡毛片a在线| 中文字幕不卡高清免费| 亚洲精品不卡视频| 国产成人精品免费直播| 中国一级特黄的片子免费| 久久精品国产亚洲AV无码娇色| AV免费网址在线观看| 国产一区二区三区亚洲综合| 亚洲日本一区二区三区在线| 中文字幕亚洲免费无线观看日本| 麻豆狠色伊人亚洲综合网站| 亚洲国产香蕉人人爽成AV片久久| 午夜网站在线观看免费完整高清观看| 亚洲精品不卡视频|