第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果可能的話,我應該總是使用并行流嗎?

如果可能的話,我應該總是使用并行流嗎?

蝴蝶不菲 2019-06-24 15:25:15
如果可能的話,我應該總是使用并行流嗎?使用Java 8和lambda,可以很容易地將集合作為流來迭代,而且使用并行流也同樣容易。兩個例子醫(yī)生,第二個使用并行流:myShapesCollection.stream()     .filter(e -> e.getColor() == Color.RED)     .forEach(e -> System.out.println(e.getName()));myShapesCollection.parallelStream() // <-- This one uses parallel     .filter(e -> e.getColor() == Color.RED)     .forEach(e -> System.out.println(e.getName()));只要我不關(guān)心順序,使用并行總是有益的嗎?人們可能會認為,在更多的核心上劃分工作會更快。還有其他考慮嗎?什么時候應該使用并行流,什么時候應該使用非平行流?(這個問題被要求引發(fā)關(guān)于如何和何時使用并行流的討論,而不是因為我認為總是使用它們是個好主意。)
查看完整描述

3 回答

?
慕田峪7331174

TA貢獻1828條經(jīng)驗 獲得超13個贊

與順序流相比,并行流具有更高的開銷。協(xié)調(diào)線程需要大量時間。默認情況下,我將使用順序流,并且僅在以下情況下考慮并行流:

  • 我有大量的項目要處理(或者每個項目的處理需要時間,并且是可并行的)

  • 我一開始就有表演問題

  • 我還沒有在多線程環(huán)境中運行進程(例如:在web容器中,如果我已經(jīng)有許多請求并行處理,那么在每個請求中添加一個額外的并行層可能會產(chǎn)生更多的負面影響而不是積極的影響)。

在您的示例中,性能無論如何都將由同步訪問System.out.println(),使這一過程并行不會產(chǎn)生任何影響,甚至是負面的影響。

此外,請記住,并行流并不能神奇地解決所有同步問題。如果進程中使用的謂詞和函數(shù)使用共享資源,則必須確保所有內(nèi)容都是線程安全的。特別是,如果你并行的話,副作用是你必須擔心的事情。

無論如何,測量,不要猜測!只有度量才能告訴您并行性是否值得。


查看完整回答
反對 回復 2019-06-24
  • 3 回答
  • 0 關(guān)注
  • 630 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號