![](/img/trans.png)
[英]Minimizing SecureRandom performance problems in multithreaded environment?
[英]ACID Problems in a Multithreaded Environment
我有一个多线程的Java应用程序,它在MySQL数据库上执行许多并行的CRUD操作。 如MySQL手册中所述,InnoDB表结构应确保按照ACID原则执行事务。 但是我仍然有问题,因为有时更新会丢失。 这是我使用的示例存储过程之一:
DELIMITER //
CREATE PROCEDURE *** (
_*** INT,
_*** INT,
_*** INT,
_*** INT
)
BEGIN
START TRANSACTION;
UPDATE `***`
SET
`***`.`***` = `***`.`***` + _***,
`***`.`***` = `***`.`***` + _*** + _***,
`***`.`***` = DATE_ADD(NOW(), INTERVAL _*** SECOND)
WHERE `***`.`***` = _***;
COMMIT;
END;
//
DELIMITER ;
JDBC类不是可重入的,因此您必须同步使用连接,语句等对象实例。它们无法节省地同时由多个线程使用。
使用连接池是简化并发访问数据库的一种好方法。
编辑
如果确定线程永远不会使用相同的连接,则可以检查
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.