等到所有线程在java中完成工作
2022-08-31 09:12:03
我正在编写一个具有 5 个线程的应用程序,这些线程同时从 Web 获取一些信息,并在缓冲区类中填充 5 个不同的字段。
我需要验证缓冲区数据,并在所有线程完成其作业时将其存储在数据库中。
我该怎么做(当所有线程都完成其工作时收到警报)?
我正在编写一个具有 5 个线程的应用程序,这些线程同时从 Web 获取一些信息,并在缓冲区类中填充 5 个不同的字段。
我需要验证缓冲区数据,并在所有线程完成其作业时将其存储在数据库中。
我该怎么做(当所有线程都完成其工作时收到警报)?
我采用的方法是使用执行器服务来管理线程池。
ExecutorService es = Executors.newCachedThreadPool();
for(int i=0;i<5;i++)
es.execute(new Runnable() { /* your task */ });
es.shutdown();
boolean finished = es.awaitTermination(1, TimeUnit.MINUTES);
// all tasks have finished or the time has been reached.
您可以加入
线程。连接块,直到线程完成。
for (Thread thread : threads) {
thread.join();
}
请注意,抛出一个 .如果发生这种情况,您必须决定该怎么做(例如,尝试取消其他线程以防止完成不必要的工作)。join
InterruptedException