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" />
答案 0 :(得分:0)
不同之处在于SimpleThreadPool(或Quartz属性中配置的任何其他线程池实现)提供的线程是非托管线程,即不由容器管理的线程。
另一方面,配置的工作管理器提供的线程是由容器创建的托管线程,通常通过容器的管理控制台进行配置。
在J2EE世界中,通常非常不鼓励创建非托管线程,如果你检查J2EE规范,你会发现它在那里被明确提到(或曾经在那里)。
您可能需要查看此SO post以获取有关该主题的更多详细信息。