加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在关闭Executors之前等待所有线程完成

发布时间:2020-12-15 02:00:26 所属栏目:Java 来源:网络整理
导读:这是我的代码片段. ExecutorService executor = Executors.newFixedThreadPool(ThreadPoolSize);while(conditionTrue){ClassImplementingRunnable c = new ClassImplementingRunnable();executor.submit(c);} 现在这样做了 executor.shutdown(); 我想在这里
这是我的代码片段.

ExecutorService executor = Executors.newFixedThreadPool(ThreadPoolSize);
while(conditionTrue)
{
ClassImplementingRunnable c = new ClassImplementingRunnable();
executor.submit(c);
}

现在这样做了

executor.shutdown();

我想在这里实现的是,我想等待线程池中的所有线程完成执行,然后我想关闭执行程序.

但我想这不是这里发生的事情.主线程似乎正在执行关闭,它只是关闭所有东西.

在我的线程池大小为2之前,我做了以下操作,它似乎工作.

ClassImplementingRunnable c1 = new ClassImplementingRunnable();
executor.submit(c1);
ClassImplementingRunnable c2 = new ClassImplementingRunnable();
executor.submit(c2);
Future f1 = executor.submit(c1);
Future f2 = executor.submit(c2);
while(!f1.done || !f2.done)
{}
executor.submit();

我如何为线程池中的更多线程执行此操作?
谢谢.

解决方法

您通常使用以下习语:

executor.shutdown();
executor.awaitTermination(Integer.MAX_VALUE,TimeUnit.SECONDS);

> shutdown只是说遗嘱执行人不接受新工作.
> awaitTermination等待,直到已经提交的所有任务完成他们正在做的事情(或者直到达到超时 – 这对于Integer.MAX_VALUE不会发生 – 你可能想要使用更低的值).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读