我想對多線程函數進行性能測試,結果顯示單線程函數的運行速度更快,這是我的代碼。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()代價也很高。高性能打印應使用不同的方法 –