Параллелизм данных с 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())()
будет действительным, я проверю это позже