轉載java_eye(http://www.iteye.com/topic/711162)

chyx413332087 14年前發布 | 1K 次閱讀

一:分析題目
從題中可以看到“很大的List”以及“充分利用多核CPU”,這就已經充分告訴我們要采用多線程(任務)進行編寫。具體怎么做呢?大概的思路就是分割List,每一小塊的List采用一個線程(任務)進行計算其和,最后等待所有的線程(任務)都執行完后就可得到這個“很大的List”中所有整數的和。
二:具體分析和技術方案
既然我們已經決定采用多線程(任務),并且還要分割List,每一小塊的List采用一個線程(任務)進行計算其和,那么我們必須要等待所有的線程(任務)完成之后才能得到正確的結果,那么怎么才能保證“等待所有的線程(任務)完成之后輸出結果呢”?這就要靠java.util.concurrent包中的CyclicBarrier類了。它是一個同步輔助類,它允許一組線程(任務)互相等待,直到到達某個公共屏障點 (common barrier point)。在涉及一組固定大小的線程(任務)的程序中,這些線程(任務)必須不時地互相等待,此時 CyclicBarrier 很有用。簡單的概括其適應場景就是:當一組線程(任務)并發的執行一件工作的時候,必須等待所有的線程(任務)都完成時才能進行下一個步驟。具體技術方案步驟如下:

 本文由用戶 chyx413332087 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!