群集使用螺纹在Java
-
18-09-2019 - |
题
我有工作需要很长的时间。所以我想要分割这个工作进入线并运行它们。后线完成他们的工作,回到我的服务和服务给他们新的就业机会。ThreadGroup适用于这种或任何其他建议?
解决方案
检查出的 ExecutorCompletionService 强> - 它不正是这个
示例强>:从Java拉出6周API的JavaDoc]
void solve(Executor e, Collection<Callable<Result>> solvers)
throws InterruptedException, ExecutionException {
CompletionService<Result> ecs
= new ExecutorCompletionService<Result>(e);
for (Callable<Result> s : solvers)
ecs.submit(s);
int n = solvers.size();
for (int i = 0; i < n; ++i) {
Result r = ecs.take().get();
if (r != null)
use(r);
}
}
其他提示
不知道在什么样的发展状态项目目前,由于您的问题声明是相当有限的,但你可能要考虑让有看的fork-join项目在JDK7未来:的 http://www.ibm.com/developerworks/java/library/j-jtp11137.html 一>
有很多东西需要获得与从看那个学习,因为它是所有开源的,你可以在已使用它下载代码为贴片,一展身手。
(可能并不适用于任何你需要实现的现在的,但值得一看非更少,如果你打算开发/维护在未来一段时间内您的应用程序)
看看 java。工具.并发 包。
有一个教程在这里你应该找到你需要知道的一切都在这里:
http://java.sun.com/docs/books/tutorial/essential/concurrency/
重点 高水平并发对象 尤其是这样。
ThreadGroup
是多大用处的应用程序代码的一般不。这不是用集装箱代码的大量要么。 Java插件使用ThreadGroup
区分线程所属的小应用程序。
java.util.concurrent
,特别ExecutorService
,提供除其他事项外方便的工具,用于处理的线程和并发性。
有关计算密集的细粒度的任务,在JDK7叉-join框架将是有用的。
开始在这个困难的代码之前,你可能要考虑是否值得。你能做到这一点并不需要大规模的线程使用其他的优化?难道你想处理I / O延迟?如果是CPU密集型的,没有一点的使用更多的线程比你在硬件很大。