我想在我的一個項目中使用石英。我知道有一個調度程序和一個工作線程池。石英調度程序是否在自己的線程上運行?
- 調度程序是否在其自己的線程中連續運行並關閉作業?
- 如果我在2核心CPU上運行應用程序,一個核心會忙於調度線程嗎?
我想在我的一個項目中使用石英。我知道有一個調度程序和一個工作線程池。石英調度程序是否在自己的線程上運行?
是的,quartz使用至少n + 1個線程,其中1是運行在無限循環中的調度程序線程,睡眠在應該觸發的下一個任務之前。 N是線程池中的工作線程數。您可以使用屬性org.quartz.threadPool.threadCount
配置此號碼。
您可以通過運行例如Eclipse的東西來看到它的工作,然後在調試視圖中可以看到應用程序的活動線程和睡眠線程。
石英將創建一個可配置的線程池。每個作業都會在自己的線程中觸發(當然,否則它們不能同時運行)。不,它不是一個繁忙的循環,所以調度程序不會爲自己申請一個CPU。
乾杯,我實際上抓住了源代碼和'QuartzSchedulerThread'是非常明顯的:)。雖然他們的睡眠很時髦:'long now = System.currentTimeMillis(); long waitTime = now + getRandomizedIdleWaitTime(); long timeUntilContinue = waitTime - now; 同步(sigLock){ \t嘗試{ \t \t \t \t \t \t sigLock.wait(timeUntilContinue); \t \t \t \t \t}趕上(InterruptedException的忽略){ \t \t \t \t \t} }' –