【发布时间】:2012-02-28 19:03:41
【问题描述】:
我试图找出 Java 中多核和单核解决方案在运行时间上的差异。到目前为止,单核运行良好。但是,我从多核解决方案中收到了不稳定的报告,有些报告说它花费了 0 纳秒,或者稍长一些。
多核如下:(请注意,我并没有做任何太高级的事情,只是想找出它运行的时间长度。CPU execution time in 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.");
有没有办法确定线程何时停止执行?
【问题讨论】:
-
你确定你在这里做什么?您正在启动三个线程,然后测量启动其他三个线程的时间。不出所料,它可能是 0。
-
我不是 Java 程序员,因此无法帮助您解决问题的这方面。但是(据说)纳秒内的任何数字都可能在统计上毫无用处。让你的线程运行更长时间以获得有用的计时数据。