效率的瓶頸不在代碼的時候,比如用的最多的io操作,
下載器,下載服務器每個接口就給妳500k的速度,那多線程相當於500*n,本地網絡最大2m每秒,可以開3~5個線程自然快;
復制器,windows操作系統復制文件很慢,因為負責復制的api防止系統卡死每個線程就給妳那點速度,如果用java寫個多線程io流復制,速度快8倍左右;
這樣的場合有個特點,速度或者說效率的關鍵不是java的處理能力,而是接口限制成了瓶頸;
舉個反例,如果對壹個集合進行遍歷,打印value,使用多線程明顯比單線程效率低;因為時間過多的消耗在了創建線程,銷毀線程上,執行的有用代碼和單線程沒區別,效率不如單線程;