Параллелизм данных с GPars

Я нашел этот пример здесь Параллелизм данных

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()
}

Будет ли это работать?
Если нет, есть ли другой способ?

2 ответа

Решение

Думаю, что вам нужно:

Future result = { calculate() }.async()()

calculate().async() запустит calculate метод немедленно. Я бы поспорил с

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

так как async() возвращает закрытие Я не уверен, если ({calculate()}.async())() будет действительным, я проверю это позже

Другие вопросы по тегам