让我先谈谈我的“一个工作单位”的例子:
我需要在数据库中插入一个事务。与该事务一起,将一对唯一代码存储到单独的表中,外键是事务id。我有4个数据库交互:1)从序列中获取下一个事务id; 2)插入交易; 3& 4)使用交易ID插入2个唯一代码。
这是一个多线程Java应用程序。哪条路线最好?
答案 0 :(得分:0)
我曾经使用过' Akka'框架'帮助我完成多线程部分。
我们用你的第二种方法解决了。使用单一连接来完成工作。 1)从序列中获取下一个事务id; 2)插入交易; 3& 4)使用事务id插入2个唯一代码。 让这个工作成为原子。如果四个步骤中的任何一个连接失败,则回滚完整的工作。
维持一个“身份证”。这将确保这项工作再次开始。只有在工作中的所有交易完成时才会更新ID。
如果事务是不同类型的,那么您可以使用不同的线程对它们进行操作(每个事务类型对应于单独的工作)和新的数据库连接。