Java System.nanoTime () несколько параллельных вызовов приводят к одним и тем же значениям? - PullRequest
0 голосов
/ 14 сентября 2018
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 (!!) вызовами.

Как это может произойти?

P.S. Я на Win10 x64

...