Java中如何确保在多线程情况下,所有线程都完成再继续执行任务 |
您所在的位置:网站首页 › java线程池中的线程执行完毕怎么办 › Java中如何确保在多线程情况下,所有线程都完成再继续执行任务 |
1.awaitTermination
awaitTermination是ExecutorService自带的方法,用来确保所有的线程任务都执行完毕。 awaitTermination方法会阻塞当前线程,直到线程池中的所有任务都执行完毕或者超过指定的超时时间。如果线程池中的任务都执行完毕,则返回true,否则返回false。如果在指定的超时时间内没有等到线程池中的任务执行完毕,则会返回false。 awaitTermination方法的声明如下: boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException;其中,timeout参数表示超时时间,unit参数表示超时时间的单位。 例如下使用线程池来执行100个不同的 SQL 语句,将查询结果存储在一个 List 集合中,具体实现如下: 定义一个 Runnable 接口的实现类,用来执行 SQL 查询任务,该类需要在构造函数中接收 SQL 语句和存储结果的 List 集合对象。 public class SqlQueryTask implements Runnable { private final String sql; private final List resultList; public SqlQueryTask(String sql, List resultList) { this.sql = sql; this.resultList = resultList; } @Override public void run() { // 执行 SQL 查询,并将结果存储在 resultList 中 Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", ""); stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) { Map rowMap = new HashMap(); // 获取查询结果的每一列的名称和值,并将其存储在 Map 中 ResultSetMetaData metaData = rs.getMetaData(); int count = metaData.getColumnCount(); for (int i = 1; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |