プロが教えるわが家の防犯対策術!

Javaの再帰でメソッド呼び出す処理を並列にしたいけど、どうすればいいですか?

A 回答 (1件)

現在のソースコードを提示していただけないと一般的な事しか回答のしようがありません。


再起処理は一般化すると以下のような流れとなるかと思います。
pvivate int HogeMethod(int param1,int param2){
・・・再起呼び出しの前置処理・・・
int subResult=this.HogeMathod(subParam1,subParam2);
・・・再起呼び出しの後続処理・・・
return result;
}
もしも前置処理の主要な処理より前にsubParam1及びsubParam2が算出可能、または、subResultが後続処理の主要な処理より後で使用されていれば、パラメータが算出可能になった直後にスレッドを立ち上げて、結果の使用直前でWateすればある程度並列化は可能になります。
ただし、DBアクセスやファイルアクセスを含み、結果の順序依存性がある場合はその限りではありません。

並列性を高めるなら以下の様な事を考慮するとよりでしょう。
・再帰構造のループ化
・結果の順序依存性の排除(1行目、2行目の順で出力されても2行目、1行目の順で出力されても結果として等価であるようにする)
・順序依存性の排除が困難であれば結果ソート及び出力処理の外部化
・ファイルアクセスなどスレッドセーフ考慮が必要な処理の外部化
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!