Por que usar fluxos paralelos no inicializador estático leva a um conflito não estável

CUIDADO não é uma duplicata, leia o tópico сarfully https: //stackoverflow.com/users/3448419/apangi quote:

A verdadeira questão é por que o código às vezes funciona quando não deveria. O problema se reproduz mesmo sem lambdas. Isso me faz pensar que pode haver um bug da JVM.

Nos comentários dehttps: //stackoverflow.com/a/53709217/267430entei descobrir os motivos pelos quais o código se comporta de maneira diferente de um começo para o outro e os participantes dessa discussão me deram conselhos para criar um tópico separad

Não vamos considerar o seguinte código fonte:

public class Test {
    static {
        System.out.println("static initializer: " + Thread.currentThread().getName());

        final long SUM = IntStream.range(0, 5)
                .parallel()
                .mapToObj(i -> {
                    System.out.println("map: " + Thread.currentThread().getName() + " " + i);
                    return i;
                })
                .sum();
    }

    public static void main(String[] args) {
        System.out.println("Finished");
    }
}

s vezes (quase sempre) leva a um impass

Exemplo de saída:

static initializer: main
map: main 2
map: ForkJoinPool.commonPool-worker-3 4
map: ForkJoinPool.commonPool-worker-3 3
map: ForkJoinPool.commonPool-worker-2 0

Mas às vezes termina com sucesso (muito raro):

static initializer: main
map: main 2
map: main 3
map: ForkJoinPool.commonPool-worker-2 4
map: ForkJoinPool.commonPool-worker-1 1
map: ForkJoinPool.commonPool-worker-3 0
Finished

o

static initializer: main
map: main 2
map: ForkJoinPool.commonPool-worker-2 0
map: ForkJoinPool.commonPool-worker-1 1
map: ForkJoinPool.commonPool-worker-3 4
map: main 3

Você poderia explicar esse comportamento?

questionAnswers(1)

yourAnswerToTheQuestion