java多线程执行sql
时间: 2023-06-28 19:08:01 浏览: 79
Java多线程执行SQL可以提高查询效率和响应速度。一种常见的做法是使用线程池,通过多线程并发执行SQL语句。示例代码如下:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MultiThreadSQL {
private static final String URL = "jdbc:mysql://localhost:3306/test";
private static final String USERNAME = "root";
private static final String PASSWORD = "root";
public static void main(String[] args) {
Runnable task = () -> {
try (Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD)) {
String sql = "SELECT * FROM users";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name") + " : " + rs.getInt("age"));
}
} catch (SQLException e) {
e.printStackTrace();
}
};
ExecutorService executor = Executors.newFixedThreadPool(10); // 创建线程池
for (int i = 0; i < 100; i++) {
executor.execute(task); // 提交任务
}
executor.shutdown(); // 关闭线程池
}
}
```
上述代码中,创建了一个固定大小的线程池,每个线程都执行相同的SQL查询任务。在循环中提交100个任务,线程池会自动分配线程来执行任务,当所有任务执行完毕后,关闭线程池。
需要注意的是,多线程执行SQL时需要使用连接池来管理数据库连接。每个线程都需要获取一个连接,使用完毕后释放连接,以避免连接泄漏和性能问题。