gpt4 book ai didi

java - 并发应用中的 PreparedStatement 批量更新

转载 作者:行者123 更新时间:2023-11-30 11:32:10 25 4
gpt4 key购买 nike

我有两种方法方法 A 和方法 B。方法 A 负责向用户发送账单,方法 B 负责更新数据库。方法 B 使用 PreparedStatement。 方法 A 一次由不同的并发线程运行。例如

Thread 1- Method A
Thread 2- Method A
Thread 3- Method A

方法 A 调用方法 B 来更新数据库以判断计费失败或成功。就像

void A()
{
send billing sms
if (successful)
{
//update database with successful status
status='success'
}

if unsuccessful{
status='unsuccess'
}
method B(status, connection);

}

void B(Status s, Connection con)
{

PreparedStatement codes.. for update

}

因为方法 A 一次被不同的并发线程调用,我如何在方法 B 中实现 PreparedStatement Batch 函数说我想一次更新 50 个事务而不是一个一个地更新。我想要一些在方法 A 上创建的计数器(但由于并发线程运行这个方法,这可能吗?)或在方法 B 中(但是当不同的并发线程调用时,计数器变量将再次为 0,所以这可能吗?)或者制作一个全局计数器类,以便每次方法 B () 是调用这个计数器增加,一旦它达到 50,然后执行批量更新(不知道它)..

请指教!!

最佳答案

老实说,我根本不会这样做。

应该处理数据库更新由于某种原因失败的可能性,如果您批处理完全不相关的账单更新,则不能。如果在您的批处理中有待处理的更新时关闭服务器,您的方法也很可能会完全错过数据库更新。

一种更简洁的方法是在一次交易中同时处理多个帐单。根据用例,这可能是合适的(批处理),也可能完全不切实际(如果它是用户驱动的操作)。

关于java - 并发应用中的 PreparedStatement 批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811131/

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