whereeaglesdare
@whereeaglesdare

Почему треды из parallelStream в состоянии WAIT?

Добрый день

Мне необходимо разобраться, почему в треддампе висят треды, которые формируются в parallelStream
"http-nio-8080-exec-147" #49010
	java.lang.Thread.State: WAITING
		at java.lang.Object.wait(Native Method)
		at java.util.concurrent.ForkJoinTask.externalAwaitDone(ForkJoinTask.java:334)
		at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:405)
		at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:734)
		at java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:160)
		at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:174)
		at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
		at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
		at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:583)


Пример кода:

if (model != null) {
            model.parallelStream().forEach(this::handleSingleStep);
        }


Метод handleSingleStep записывает изменения из модели в бд MySQL

Как я понимаю, что распараллеливать стрим для того, чтобы записывать данные в бд - плохая идея.
Объясните пожалуйста, почему?
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Ryabos
Чтобы точно ответить на этот вопрос, нужно знать, что из себя представляет model. Если это stream, полученный с помощью Stream.iterate или же был использован limit — JVM пытается распараллелить выполнение, но в результате только плодит потоки
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы