2

ここでこの例を見つけましたデータの並列処理

GParsPool.withPool() {
    Closure longLastingCalculation = {calculate()}
    Closure fastCalculation = longLastingCalculation.async()
    Future result=fastCalculation()
    //do stuff while calculation performs …
    println result.get()
}

私はそれが少し広いと思います。短くする方法はありますか?
多分:

GParsPool.withPool() {
    Future result = calculate().async()
    //do stuff while calculation performs …
    println result.get()
}

それはうまくいくでしょうか?
そうでない場合、別の方法はありますか?

4

2 に答える 2

2

calculate().async()calculateメソッドをすぐに起動します。私は賭けるだろう

GParsPool.withPool() {
    Future result = {calculate()}.async().call()
    //do stuff while calculation performs …
    println result.get()
}

async()クロージャーを返すためです。有効かどうかはわかりません({calculate()}.async())()。後でテストします

于 2013-01-26T00:00:49.920 に答える
2

あなたが必要だと思う:

Future result = { calculate() }.async()()
于 2013-01-25T23:58:48.910 に答える