A. Java 多線程和單線程效率比較,最好是能上代碼,我使用了多線程發現耗時更多,求大神解釋!
單線程比多線程更快。你的測試代碼只是用了CPU資源。因為多線程需要處理線程的開銷,開銷多了自然沒有單線程快。
多線程是為了更充分的利用計算機的資源。比如網路,IO,CPU...如果你在for循環里加入一個磁碟寫入操作,多線程就會比單線程快了
B. 單線程和多線程的區別
多線程和單線程本質區別是:
(1)多線程的產生並不是因為發明了多核CPU甚至現在有多個CPU+多核的硬體,也不是因為多線程CPU運行效率比單線程高。單從CPU的運行效率上考慮,單任務進程及單線程效率是最高的,因為CPU沒有任何進程及線程的切換開銷,
(2)實際上,多線程的出現主要為了解決IO設備的讀寫速度往往比CPU的處理速度慢造成的單線程程序運行阻塞問題,一個極端的例子就是如果你需要用戶在鍵盤上輸入一個數據,當用戶沒有輸入前,單線程程序就阻塞了,多線程程序就可以放個音樂或繼續干一些程序中除了鍵盤輸入外的工作,因此,多線程能提高因程序由於等待某個資源阻塞時其他資源的利用率(是利用率不是效率)。
(3)因此多線程與單線程的最大區別,多線程程序能在等待某個IO操作時,繼續完成非這個IO的其他工作,有利於提高完成整個任務的效果和速度。此外,多線程程序與單線程程序對程序設計也有不同的流程和結構,多線程需要考慮對靜態變數等資源的操作互鎖及程序執行的同步問題。