Java中的executeUpdate方法是线程安全的吗?

Ale*_*lex 7 java mysql multithreading jdbc

在我的应用程序中,有多个线程试图插入MySQL的 database.Is 的executeUpdate方法是线程安全的使用?我怎样才能使这项工作?

das*_*ght 6

虽然executeUpdate方法本身可能是线程安全的,但是预准备语句不是设计为同时使用的.这是因为每个实例都存储您的参数,直到executeUpdate指示它将参数发送到MySQL.此外,由于事务是通过Connection对象管理的,因此在没有同步的情况下并发共享连接可能会在提交/回滚时给您带来不希望的行为.

为了使来自多个线程的插入同时工作,每个线程需要使用它自己的Connection,并自己创建PreparedStatement.在同一个数据库上并发使用多个预准备语句是线程安全的,因为并发是在RDBMS端管理的.