我想为一系列数据库调用(串行)创建一个ThreadPool。我们想保存那些毫秒。所以我们不想浪费时间来串行执行数据库查询。 我正在研究已经有许多并行节点的服务器应用程序。在其中一个节点中有一系列数据库调用。我想在已经与其他节点并行运行的节点内引入并行性。
线程池执行器是一个不错的选择吗?我不知道我将运行多少查询。它取决于请求对象的状态。所以我无法修复线程池的队列大小。
This is the example that I have found.
效率这么高吗?还有其他选择吗?任何建议将不胜感激。
答案 0 :(得分:4)
在Java EE环境中生成自己的线程通常是个坏主意。有时它必须完成,但如果有替代方案,你不应该这样做。我不确定你要做什么,以及你所使用的Java EE版本,但如果是6,那么也许你可以使用asynchronous EJB.
答案 1 :(得分:3)
您的问题的标准解决方案是使用JMS。每个查询都应该包含在命令中。命令应作为JMS消息发送到队列。 MDB(消息驱动的bean)应该接收它们消息并异步执行查询。
这种方法还有另一个优点:如果您正在使用多个物理服务器,则工作将在它们之间分配,因此系统将更加强大。