首页 / JAVA / Java执行程序:等待任务终止.
Java执行程序:等待任务终止.
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java执行程序:等待任务终止.,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1319字,纯文字阅读大概需要2分钟。
内容图文
参见英文答案 > How to wait for all threads to finish, using ExecutorService? 24个
我需要提交一些任务,然后等待所有结果,直到所有结果都可用.它们中的每一个都向Vector添加一个String(默认情况下是同步的).然后我需要为Vector中的每个结果启动一个新任务,但是只有当所有先前的任务都停止了它们的工作时我才需要这样做.
我想使用Java Executor,特别是我尝试使用Executors.newFixedThreadPool(100)来使用固定数量的线程(我有一个可变数量的任务,可以是10或500)但我是执行器和我不知道如何等待任务终止.
这就像我的程序需要做的伪代码:
ExecutorService e = Executors.newFixedThreadPool(100);
while(true){
/*do something*/
for(...){
<start task>
}
<wait for all task termination>
for each String in result{
<start task>
}
<wait for all task termination>
}
我不能做e.shutdown,因为我有一段时间(真的)我需要重用executorService …
你能帮助我吗?你能给我一个关于java执行器的指南/书吗?
解决方法:
ExecutorService为您提供了一种机制,可以同时执行多个任务并获取Future对象的集合(表示任务的异步计算).
Collection<Callable<?>> tasks = new LinkedList<Callable<?>>();
//populate tasks
for (Future<?> f : executorService.invokeAll(tasks)) { //invokeAll() blocks until ALL tasks submitted to executor complete
f.get();
}
如果你有Runnables而不是Callables,你可以轻松地将Runnable变成Callable< Object>使用方法:
Callable<?> c = Executors.callable(runnable);
内容总结
以上是互联网集市为您收集整理的Java执行程序:等待任务终止.全部内容,希望文章能够帮你解决Java执行程序:等待任务终止.所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。