多线程事务指的是在多个线程中同时进行事务处理。下面是一个简单的Java多线程事务示例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class MultiThreadTransactionDemo {
public static void main(String[] args) {
// 第一个线程
new Thread(() -> {
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "root", "password");
conn.setAutoCommit(false); // 关闭自动提交
PreparedStatement ps = conn.prepareStatement("INSERT INTO user (name, age) VALUES (?, ?)");
ps.setString(1, "Tom");
ps.setInt(2, 20);
ps.executeUpdate();
conn.commit(); // 手动提交事务
System.out.println("Thread 1 transaction success.");
} catch (SQLException e) {
try {
conn.rollback(); // 事务回滚
} catch (SQLException ex) {
ex.printStackTrace();
}
e.printStackTrace();
}
}).start();
// 第二个线程
new Thread(() -> {
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "root", "password");
conn.setAutoCommit(false);
PreparedStatement ps = conn.prepareStatement("INSERT INTO user (name, age) VALUES (?, ?)");
ps.setString(1, "Mary");
ps.setInt(2, 18);
ps.executeUpdate();
conn.commit();
System.out.println("Thread 2 transaction success.");
} catch (SQLException e) {
try {
conn.rollback();
} catch (SQLException ex) {
ex.printStackTrace();
}
e.printStackTrace();
}
}).start();
}
}
在这个示例中,我们创建了两个线程,在每个线程中都进行了一次事务处理,分别在数据库中插入了两条记录。每个线程都使用