我想对多线程函数进行性能测试,结果显示单线程函数的运行速度更快,这是我的代码。hello world如何在没有线程的情况下工作得更快
package jollyDay;
public class JollyDay implements Runnable
{
public void run() {
System.out.println("Hello from a thread!");
}
public static void main(String args[])
{
int i=0;
while(true)
// {new JollyDay().run();i++;System.out.println(i);}
{(new Thread(new JollyDay())).start();i++;System.out.println(i);}
}
}
在螺纹函数,i是等于150000但在功能,而不螺纹i被等于400000在10秒那么为什么螺纹较慢,不应该它更快?
。我的CPU有8个线程
产生新的线程有性能上的开销 - 使用它们,这样一个小任务将意味着大部分工作是在开销中完成的,而不是在实际的代码中完成。此外,通过生成无限数量的线程,您将使操作系统难以调度线程(更多开销)。当只使用一个线程时,您也不会经历很多的上下文切换,但有许多您可能会遇到更多。 – hnefatl
线程这样的任务没有意义。线程并不是“更快”,它是管理CPU执行的一种方式。电脑有点笨,他们一次只能做一件事。所以线程帮助我们按照所需的顺序执行我们的任务。这要求你的线程有一个优先权(即,我应该先做什么)。如果您为自己的主题添加了优先级,则可以看到您的预期行为。另外你的CPU没有8个线程,它有8个内核。 – DoesData
System.out.println()代价也很高。高性能打印应使用不同的方法 –