Я пытаюсь найти разницу во времени выполнения многоядерных и одноядерных решений на Java. Пока одно ядро работает нормально. Однако я получаю ошибочные отчеты от многоядерного решения, некоторые сообщают, что это заняло 0 наносекунд или чуть больше.
Многоядерный код выглядит следующим образом: (Обратите внимание, что я не делаю ничего слишком сложного, просто пытаюсь определить продолжительность его работы. Время выполнения процессора в Java убедило меня использовать System.nanoTime()
вместо .currentTimeMillis()
)
long start = System.nanoTime();
Runnable r0 = new FindMagicBrute(n);
Thread t0 = new Thread(r0);
Thread t1 = new Thread(r0);
Thread t2 = new Thread(r0);
t0.start();
t1.start();
t2.start();
long end = System.nanoTime();
System.out.println("Multithreaded run ended in " + (end-start) + " nanoseconds.");
Есть ли способ определить, когда поток прекратил выполнение?