Java:在Server应用程序中创建线程池

时间:2011-05-08 16:04:29

标签: java multithreading java-ee thread-safety threadpool

我想为一系列数据库调用(串行)创建一个ThreadPool。我们想保存那些毫秒。所以我们不想浪费时间来串行执行数据库查询。 我正在研究已经有许多并行节点的服务器应用程序。在其中一个节点中有一系列数据库调用。我想在已经与其他节点并行运行的节点内引入并行性。

线程池执行器是一个不错的选择吗?我不知道我将运行多少查询。它取决于请求对象的状态。所以我无法修复线程池的队列大小。

This is the example that I have found.

效率这么高吗?还有其他选择吗?任何建议将不胜感激。

2 个答案:

答案 0 :(得分:4)

在Java EE环境中生成自己的线程通常是个坏主意。有时它必须完成,但如果有替代方案,你不应该这样做。我不确定你要做什么,以及你所使用的Java EE版本,但如果是6,那么也许你可以使用asynchronous EJB.

答案 1 :(得分:3)

您的问题的标准解决方案是使用JMS。每个查询都应该包含在命令中。命令应作为JMS消息发送到队列。 MDB(消息驱动的bean)应该接收它们消息并异步执行查询。

这种方法还有另一个优点:如果您正在使用多个物理服务器,则工作将在它们之间分配,因此系统将更加强大。