Java System.nanoTime() несколько параллельных вызовов приводят к одним и тем же значениям?

public static void main(String[] args)
{
    Map<Long, Long> map = IntStream.range(0, 1_000_000)
        .parallel()
        .mapToObj(i -> System.nanoTime())
        .collect(Collectors.groupingBy(x -> x, Collectors.counting()));

    map.entrySet()
        .stream()
        .max(Entry.comparingByValue())
        .ifPresent(e -> System.out.printf("%X => %d\r\n", e.getKey(), e.getValue()));
}

печатает (то есть):

69C57829077 => 24

Я думал, что два вызова в одной и той же виртуальной машине (даже если в разных потоках) должны возвращать два разных значения.

В этом случае одно значение возвращается 24 (!!) вызовами.

Как это может случиться?

PS я на Win10 x64

0 ответов

Другие вопросы по тегам