簡單的來算,我們可以採用 for while 之類迴圈來計算,下面採用的for迴圈
static void forsum()
long end = system.currenttimemillis();
system.out.println("for求和="+sum+",所花時間為:"+(end-start));
}
我們可以想想怎麼才能更有效率,for是單個執行緒也即是主線程在執行計算,如果多個執行緒同時執行計算呢?速度會不會快些,試試
static void poolsum() catch (interruptedexception e) catch (executionexception e)
}static class sumtask extends recursivetask
@override
protected long compute()
return sum;
} else }}
既然多個執行緒可以,那麼多個流平行計算,是不是也可以呢?
static void streamsum()
執行試試,看看執行的效率怎樣?
我們發現好像使用並行流要快一些,其次是多執行緒,最後是單個執行緒,那麼一定是這樣的嗎?不急,往下看
我把 threshold = 50_0000;改動了一下,如下:
static class sumtask extends recursivetask{
private static final int threshold = 500;//閾值
在執行試試:
發現多執行緒計算時間變長了,其實這個和閾值有關,我們可以這樣想,乙個執行緒池的執行緒數是不是有限的,我們一直遞迴下去,不斷建立執行緒,當多出了池子裡的執行緒數,執行的時候就會有執行緒在等待的,而且,這還和 forkjoinpool 的工作特點(工作竊取)有關。比如乙個工作佇列在執行任務,還剩最後乙個任務,此時其他的執行緒來搶任務,就會出現短暫的等待狀態。
有興趣的小夥伴可以去了解一下
高效計算餘數
include using namespace std int main 這麼簡單的 就不要我解釋了吧 說實話,我也是第一次發現這麼求餘數,哪一種高效就不要我解釋了吧。但是我們還是要看一下結果,是不是。很顯然,最後乙個結果不對,那是因為 求法只在求2的n次方餘數時有效 格式k 2 n 1 為什麼?自...
雲計算熱度不減,如何高效掌握雲計算技能
國內雲計算發展現狀 國際資料公司 idc 最新發布的 中國公有雲服務市場 2019第一季度 跟蹤 報告顯示,2019第一季度中國公有雲服務整體市場規模 iaas paas saas 達到24.6億美金,同比增長67.9 其中,iaas市場增速有所減緩,同比增長74.1 paas市場依然保持高增長,增...
如何高效的學習
人的一生都需要不斷的學習,但隨著年齡的增長,可用來學習的時間越來越少,亟需找到高效的學習方法。個人認為要提供自己的學習效率,首先,要找到高質量的學習資料 其次,要掌握學習的7 2 1法則 最後,還需要利用高效的學習工具。一 如何選擇高質量的書籍 1.關注某領域專家們推薦的書籍 2.找過來人 師兄 師...