我有几个Quartz预定作业,这些作业非常密集,并且很容易破解成多个任务.
由于Spring,这些作业在tomcat web容器中被实例化和调度.
如果我在Job类和Java EE容器中使用java.util.concurrent API,这样可以吗?
我可以通过使用和调整FixedThreadPool并分配一些内核(在本例中为两个内核)来与Tomcat共享逻辑处理器吗?
int numberOfCores = Runtime.getRuntime().availableProcessors();
final int poolSize = numberOfCores - 2 // Give away Two slots for TOMCAT
final ExecutorService executorPool = Executors.newFixedThreadPool(poolSize);
最佳答案 是的,你可以做到这一点.
但在把你的工作放在tomcat之前.请注意以下内容.
你在tomcat有一个网络应用程序吗?如果是,您的Web应用程序是高度活跃的高负载门户吗?
如果是,您的线程作业将从tomcat服务器中带走有价值的处理
作业是由线程作业紧密耦合还是需要tomcat完成的?
如果你的工作真的依赖.您应该更好地创建一个单独的批处理服务器并使用它.您可以查看spring-batch的实现.