ThreadPool与ThreadExecutor

时间:2014-12-17 13:27:45

标签: quartz-scheduler

Quartz框架中的ThreadPool和ThreadExecutor有什么区别?

您可以在quartz.properties中配置它,如下所示:

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5

org.quartz.threadExecutor.class = org.quartz.commonj.WorkManagerThreadExecutor

我不明白。查看org.quartz.commonj.WorkManagerThreadExecutor,它只是从jndi中查找commonj.work.WorkManager,然后使用该管理器运行作业任务。

AFIK,您可以在JNDI上下文中声明commonj.work.WorkManager时配置线程计数等。像这样的东西

<Resource auth="Container" 
          factory="de.myfoo.commonj.work.FooWorkManagerFactory"
          maxThreads="2" 
          minThreads="1" 
          name="wm/workManager"
          type="commonj.work.WorkManager" />

1 个答案:

答案 0 :(得分:0)

不同之处在于SimpleThreadPool(或Quartz属性中配置的任何其他线程池实现)提供的线程是非托管线程,即不由容器管理的线程。

另一方面,配置的工作管理器提供的线程是由容器创建的托管线程,通常通过容器的管理控制台进行配置。

在J2EE世界中,通常非常不鼓励创建非托管线程,如果你检查J2EE规范,你会发现它在那里被明确提到(或曾经在那里)。

您可能需要查看此SO post以获取有关该主题的更多详细信息。