【发布时间】:2018-01-08 20:28:46
【问题描述】:
我正在尝试对一些大数据实施分而治之的解决方案。我使用 fork 和 join 将事物分解为线程。但是我有一个关于分叉机制的问题:如果我将分而治之的条件设置为:
@Override
protected SomeClass compute(){
if (list.size()<LIMIT){
//Do something here
...
}else{
//Divide the list and invoke sub-threads
SomeRecursiveTaskClass subWorker1 = new SomeRecursiveTaskClass(list.subList());
SomeRecursiveTaskClass subWorker2 = new SomeRecursiveTaskClass(list.subList());
invokeAll(subWorker1, subWorker2);
...
}
}
如果没有足够的资源调用subWorker 会发生什么(例如,池中没有足够的线程)? Fork/Join 框架是否为可用线程维护池大小?还是应该将此条件添加到我的分治逻辑中?
【问题讨论】:
标签: java multithreading fork-join forkjoinpool