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