首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java容器中的并发编程

Java容器中的并发编程
EN

Stack Overflow用户
提问于 2012-08-13 05:53:06
回答 2查看 340关注 0票数 4

我有几个Quartz计划的任务,这些任务非常IO密集,很容易被分解成多个任务。

由于Spring,这些作业在tomcat容器中被实例化和调度。

如果我在Job和Java容器中使用java.util.concurrent API可以吗?

我可以通过使用和调整FixedThreadPool的大小并分配几个内核(如本例中的两个)与Tomcat共享逻辑处理器吗?

代码语言:javascript
复制
int numberOfCores = Runtime.getRuntime().availableProcessors();
final int poolSize = numberOfCores - 2 // Give away Two slots for TOMCAT
final ExecutorService executorPool = Executors.newFixedThreadPool(poolSize);
EN

回答 2

Stack Overflow用户

发布于 2012-08-13 06:27:03

是啊你能做到的。但在把你的工作放进去之前。注意以下几点。

你有一个在tomcat的网络应用程序吗?如果是,您的web应用程序是一个高度活跃的高负载门户吗?

如果是,线程作业将从tomcat服务器上删除有价值的处理。

该作业是由线程作业紧密耦合完成,还是需要tomcat?

如果你的工作真的很依赖。您最好创建一个单独的批处理服务器并使用它。您可以查找spring批处理以获得实现。

票数 1
EN

Stack Overflow用户

发布于 2012-08-13 09:15:20

也许,小心点。

请注意,没有任何线程(除了原始线程--让我们调用web应用程序线程)能够可靠地与容器交互。通常,不鼓励在Java运行时中使用线程。但也不是闻所未闻的。

Tomcat选项:

  1. Java有一个WorkManager API。至少有一种用于tomcat的实现。我说不出它有多好。这篇文章对此有更多的讨论。
  2. 启动你自己的线。如何管理事物的模型可能是使用SwingUtilities.invokeLater(Runnable)的Swing事件调度循环;在您的示例中,让工作线程将待完成的工作提交到容器中的容器中,返回到容器安全的web应用线程。当等待工作线程完成时,该线程将运行一个句柄工作循环。
  3. 启动工作者请求返回到tomcat服务器:您的web应用程序现在充当客户端(web服务?)像AkhilDev建议的那样,这样的模型可以很好地扩展到其他服务器上。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11928817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档