java 帮我写并发执行两个insert语句的程序
时间: 2024-10-19 18:04:39 浏览: 0
在 Java 中,为了并发执行两个 `INSERT` SQL 语句,你可以使用 `java.sql.Connection` 和 `java.sql.Statement` 或者 `java.sql.PreparedStatement` 来操作数据库,并利用 `ExecutorService` 或 `Thread` 实现线程并发。这里是一个简单的例子,使用 `PreparedStatement` 并利用 ExecutorService:
```java
import java.sql.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ConcurrentInsertExample {
private static final String url = "jdbc:mysql://localhost:3306/mydatabase";
private static final String user = "username";
private static final String password = "password";
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(2); // 创建固定大小线程池
// 插入语句模板,注意替换成实际表名和字段
String sql1 = "INSERT INTO table1 (field1, field2) VALUES (?, ?)";
String sql2 = "INSERT INTO table2 (field3, field4) VALUES (?, ?)";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt1 = conn.prepareStatement(sql1);
PreparedStatement pstmt2 = conn.prepareStatement(sql2)) {
// 设置参数,此处仅为示例,替换为实际值
pstmt1.setString(1, "value1");
pstmt1.setInt(2, 1);
pstmt2.setString(1, "value2");
pstmt2.setInt(2, 2);
// 执行并发插入
executor.submit(() -> pstmt1.executeUpdate());
executor.submit(() -> pstmt2.executeUpdate());
// 等待所有任务完成
executor.shutdown();
while (!executor.isTerminated()) { }
} catch (SQLException e) {
System.err.println("Error executing the queries: " + e.getMessage());
}
System.out.println("Both inserts completed.");
}
}
```
在这个例子中,我们创建了一个固定大小的线程池,并将两个 SQL 插入操作提交给线程池执行。每个线程分别负责一个 `executeUpdate()` 调用。
阅读全文