在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,然后使用该管理器运行作业任务。
在JNDI上下文中声明commonj.work.WorkManager时,可以配置线程计数等。就像这样
<Resource auth="Container"
factory="de.myfoo.commonj.work.FooWorkManagerFactory"
maxThreads="2"
minThreads="1"
name="wm/workManager"
type="commonj.work.WorkManager" />发布于 2014-12-17 23:13:39
区别在于,SimpleThreadPool提供的线程(或者在Quartz属性中配置的任何其他线程池实现)是非托管线程,即不是由容器管理的线程。
另一方面,配置的工作管理器提供的线程是由容器创建并通常通过容器的管理控制台配置的托管线程。
在J2EE世界中,创建非托管线程通常是非常不鼓励的,如果您检查J2EE规范,您会发现在这里显式地提到了它(或者它曾经在那里)。
有关该主题的更多详细信息,您可能希望查看此SO post。
https://stackoverflow.com/questions/27526682
复制相似问题