пытался выполнить параллельные операции с Gpars.Нити Gpars.withPool в конечном итоге прекращают выполнение после многократного повторения
Gpars.withPool(6) {
someList.eachParallel {
println "${Thread.currentThread}"
}
}
Первоначально кажется, работает
Thread[ForkJoinPool-1-worker-1,5,main]
Thread[ForkJoinPool-1-worker-6,5,main]
Thread[ForkJoinPool-1-worker-2,5,main]
Thread[ForkJoinPool-1-worker-5,5,main]
Thread[ForkJoinPool-1-worker-3,5,main]
Thread[ForkJoinPool-1-worker-4,5,main]
Thread[ForkJoinPool-1-worker-1,5,main]
Thread[ForkJoinPool-1-worker-6,5,main]
Thread[ForkJoinPool-1-worker-2,5,main]
Но после того, как итерация на некоторое время, некоторые из потоков прекращает выполнение.
Thread[ForkJoinPool-1-worker-2,5,main]
Thread[ForkJoinPool-1-worker-3,5,main]
Thread[ForkJoinPool-1-worker-2,5,main]
Thread[ForkJoinPool-1-worker-3,5,main]
Thread[ForkJoinPool-1-worker-2,5,main]
Thread[ForkJoinPool-1-worker-3,5,main]
Thread[ForkJoinPool-1-worker-2,5,main]
До тех пор пока у нас не останется только один.
Thread[ForkJoinPool-1-worker-2,5,main]
Thread[ForkJoinPool-1-worker-2,5,main]
Thread[ForkJoinPool-1-worker-2,5,main]
Thread[ForkJoinPool-1-worker-2,5,main]
Thread[ForkJoinPool-1-worker-2,5,main]
Thread[ForkJoinPool-1-worker-2,5,main]
Любая идея, почему это происходит? Любое решение, чтобы сохранить все потоки активными?
В моем случае, возможно, стоит упомянуть, что мы выполняем итерацию около 50k-200k.
Есть ли другие темы, которые закончили свою работу? сколько строк распечатывается? –
Да, они есть. Я совершенно уверен, что они не зациклились на чем-то. Поскольку на моих тестах они просто печатаются. – froi
Что касается количества раз, я считаю, что он может завершить количество итераций, предназначенных – froi