2012-01-24 65 views
8

我有以下情況:Quartz調度最大線程數屬性

8的任務計劃與org.quartz.threadPool.threadCount一套運行於5

但在現實中,我可以看到,所有的8個任務正在運行。

這怎麼可能?

如果我設置了org.quartz.threadPool.threadCount=5並且我提交了10個石英任務,確實只有5個任務可以並行運行?

org.quartz.threadPool.threadCount屬性是什麼意思?

我有這樣的設計:

  1. 我們有一些任務是做數據庫的實體一些工作
  2. 我們必須執行一個任務特殊JobRunner
  3. 我們掃描運行的任務和計劃任務用於配置SchedulerFactoryBean的石英服務,其配置爲org.quartz.threadPool.threadCount,設置爲5.
  4. 正如我所瞭解的,如果使用SchedulerFactoryBean的石英服務將運行5個任務,並且如果我們將嘗試安排額外的任務石英本身應拋出n例外。這是真的?

謝謝。

+2

當你說所有8個工作都在運行時,你的意思是'調度器。 getCurrentlyExecutingJobs()'返回一個8個工作列表?或者他們都將輸出發送到System.out?或者是什麼? –

+0

我編輯了故事的描述。因此,如果我爲Scheduler安排了8個任務並設置了threadCount = 2,那麼這是否意味着2個線程將運行8個任務潛水時間和changin上下文? – user253202

回答

12

確實,QUARTZ的org.quartz.threadPool.threadCount只是併發/並行執行的最大數量。

這意味着,如果您安排大於THREADCOUNTX就業再K = X - THREADCOUNT作業將最多等待一個失火毫秒某種隊列THREADCOUNT作業完成。

因此計劃作業總數(或任務)可能是隊列中的等待任務的數量+正在運行的任務的數量。用運行任務的數量小於或等於threadCount

+0

有可能是2項工作使用相同的螺絲? –