いくつかの大きなデータに分割統治ソリューションを実装しようとしています。私は 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 フレームワークは、使用可能なスレッドのプール サイズを維持しますか? それとも、この条件を分割統治ロジックに追加する必要がありますか?