使用executorService呢
时间: 2023-07-11 09:26:40 浏览: 145
使用`ExecutorService`可以更方便地管理线程池,提高线程的利用率。以下是使用`ExecutorService`实现多线程并发带参数查询数据库的示例代码:
```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 QueryThread implements Runnable {
private String param;
public QueryThread(String param) {
this.param = param;
}
@Override
public void run() {
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE name = ?");
stmt.setString(1, param);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name") + ": " + rs.getInt("age"));
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public class Main {
public static void main(String[] args) {
String[] params = {"Alice", "Bob", "Charlie"};
ExecutorService executorService = Executors.newFixedThreadPool(3);
for (String param : params) {
executorService.execute(new QueryThread(param));
}
executorService.shutdown();
}
}
```
在这个示例中,我们使用`ExecutorService`创建了一个具有3个线程的线程池,并使用`execute()`方法提交了3个`QueryThread`线程。`execute()`方法会将任务提交到线程池中,并让线程池中的线程执行该任务。最后我们调用`shutdown()`方法关闭线程池。
使用`ExecutorService`可以更方便地管理线程池,而且可以提高线程的利用率,避免创建过多的线程,从而提高程序的性能。
阅读全文