我想在我的一个项目中使用石英。我知道有一个调度程序和一个工作线程池。石英调度程序是否在自己的线程上运行?
- 调度程序是否在其自己的线程中连续运行并关闭作业?
- 如果我在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} }' –