【问题标题】:Does the quartz scheduler run on its own thread?石英调度程序是否在自己的线程上运行?
【发布时间】:2012-11-28 16:02:05
【问题描述】:

我想在我的一个项目中使用石英。我知道作业有一个调度程序和一个线程池。

  • 调度程序是否在自己的线程中连续运行并触发作业?
  • 如果我在 2 核 CPU 上运行应用程序,一个核会忙于调度线程吗?

【问题讨论】:

    标签: java quartz-scheduler


    【解决方案1】:

    是的,quartz 至少使用 n+1 个线程,其中 1 是在无限循环中运行的调度程序线程,该线程在应该触发的下一个任务之前休眠。 N 是线程池中的工作线程数。您可以使用属性org.quartz.threadPool.threadCount 配置此号码。

    【讨论】:

    • 干杯,我实际上抓住了源代码,QuartzSchedulerThread 非常不言自明:)。不过,他们的睡眠相当时髦:long now = System.currentTimeMillis(); long waitTime = now + getRandomizedIdleWaitTime(); long timeUntilContinue = waitTime - now; synchronized(sigLock) { try { sigLock.wait(timeUntilContinue); } catch (InterruptedException ignore) { } }
    【解决方案2】:

    您可以通过例如 Eclipse 运行这些东西来查看它的工作情况,然后在调试视图中您可以看到应用程序的活动和睡眠线程。

    Quartz 将创建一个可配置的线程池。每个作业都会在自己的线程中触发(当然,否则它们不能同时运行)。不,它不是一个繁忙的循环,所以调度程序不会为自己申请 CPU。

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 2011-06-25
      • 2012-12-21
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多