У меня есть параллельный поток, как это:
mylist.stream().parallel().map(transform::docPDFTypeToItem)
.map(fdUtil::createEdiLine).forEach(document::add)
это работает на моих двух процессорах
теперь я пытаюсь увеличить размер forkjoinpool, потому что у меня много операций ввода-вывода, как описано здесь:
new ForkJoinPool(20).submit(() ->
mylist.stream().parallel().map(transform::docPDFTypeToItem)
.map(fdUtil::createEdiLine).parallel().forEach(document::add)).get())
но это не работает, так как я использую только 5 потоков:
08:54:48.423 [ForkJoinPool-1-worker-18]
08:54:48.426 [ForkJoinPool-1-worker-25]
08:54:48.427 [ForkJoinPool-1-worker-29]
08:54:48.430 [ForkJoinPool-1-worker-15]
08:54:48.431 [ForkJoinPool-1-worker-11]
08:54:50.426 [ForkJoinPool-1-worker-25]
08:54:50.427 [ForkJoinPool-1-worker-29]
08:54:48.423 [ForkJoinPool-1-worker-18]
08:54:48.426 [ForkJoinPool-1-worker-25]
08:54:48.427 [ForkJoinPool-1-worker-29]
08:54:48.430 [ForkJoinPool-1-worker-15]
08:54:48.431 [ForkJoinPool-1-worker-11]
08:54:50.426 [ForkJoinPool-1-worker-25]
08:54:50.427 [ForkJoinPool-1-worker-29]
...
Если я использую
System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "20");
он работает как положено (повторно использовано 20 потоков).
Вы знаете, что случилось? Это .submit()
похоже на взлом?
Я знаю, что мог бы использовать completableFuture
, например здесь но я думаю, что это менее читабельно.