gpt4 book ai didi

java - 一个事务可以有多个线程吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:04:32 25 4
gpt4 key购买 nike

一般

我们有一些业务逻辑导致交易中出现瓶颈。业务逻辑在数据库中查询一组数据(只读),对其进行处理,然后返回一个对象。这必须在给定请求中使用不同的参数多次完成。 理论上我们能否将每个业务逻辑调用拆分成一个单独的线程?

特别是

EJB object (part of an http request on a JBoss App Server)
-creates objects that implement Callable (call method calls business logic method)
-using an ExecutorService invoke each callable object

Business Logic
-Makes a query of postgresql database which uses a PreparedStatement
-Using POJOs we build objects from ResultSet objects that come from postgresql
-Do expensive calculations

在所有这一切之后,即使我们将线程限制为一个,我们也会收到未命名门户不存在的 postgres 错误:

ERROR:  cursor "<unnamed portal 777>" does not exist
STATEMENT: FETCH ALL IN "<unnamed portal 777>"

我不太确定是什么原因导致了错误,但业务逻辑被正确调用并且在没有线程的情况下也能正常工作。这让我质疑是否可以启动线程并将其添加到事务中(如果可以,我们该怎么做?)。

最佳答案

您不应在 EJB 中(或应用服务器中的任何其他地方)创建线程。如果你需要分解它,使用 JMS 或更简单的,使用 WorkManager在基于 EJB 的操作中提供并发性。

关于java - 一个事务可以有多个线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1849045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com