Java EE容器内的并发编程

我有几个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的实现.

点赞