java8的6個問題-java開發(fā)java經(jīng)驗技巧

java8的6個問題-java開發(fā)java經(jīng)驗技巧

ID:30768454

大?。?3.50 KB

頁數(shù):5頁

時間:2019-01-03

java8的6個問題-java開發(fā)java經(jīng)驗技巧_第1頁
java8的6個問題-java開發(fā)java經(jīng)驗技巧_第2頁
java8的6個問題-java開發(fā)java經(jīng)驗技巧_第3頁
java8的6個問題-java開發(fā)java經(jīng)驗技巧_第4頁
java8的6個問題-java開發(fā)java經(jīng)驗技巧_第5頁
資源描述:

《java8的6個問題-java開發(fā)java經(jīng)驗技巧》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、Java8的6個問題-編程開發(fā)技術(shù)Java8的6個問題木文由ImportNew■光光頭去打驚油翻譯自Jaxentero歡迎加入翻譯小組。轉(zhuǎn)載:請見文末要求。1.?并行Streams實際上可能會降低你的性能Java8帶來了最讓人期待的新特性Z-并行。parallelstream()?方法在集合和流上實現(xiàn)了并行。它將它們分解成子問題,然后分配給不同的線程進(jìn)行處理,這些任務(wù)可以分給不同的CPU核心處理,完成后再合并到一起。實現(xiàn)原理主要是使用了fork/join框架。好吧,聽起來很酷對吧!那一定可以在多核環(huán)境下使得操作大數(shù)據(jù)集合速度加快咯,

2、對嗎?不,如果使用不正確的話實際上會使得你的代碼運行的更慢。我們進(jìn)行了一些基準(zhǔn)測試,發(fā)現(xiàn)要慢15%,甚至可能更糟糕。假設(shè)我們已經(jīng)運行了多個線程,然后使用.paralleiStream()?來壇加更多的線程到線程池中,這很容易就超過多核心CPU處理的上限,從而增加了上下文切換次數(shù),使得整體都變慢了?;鶞?zhǔn)測試將一個集合分成不同的組(主要/非主要的):Map>groupByPrimary二numbers.parallelStreamO.collect(Collectors,groupingBy(

3、s->Utility.isPrime(s)));使得性能降低也冇可能是其他的原因。假如我們分成多個任務(wù)來處理,其屮一個任務(wù)可能因為某些原因使得處理時間比其他的任務(wù)長很多o.parallelStreamO?將任務(wù)分解處理,可能要比作為一個完整的任務(wù)處理要慢。來看看這篇文章,LukasKrecan給出的一些例了和代碼。提醒:并行帶來了很多好處,但是同樣也會冇一些其他的問題需要考慮到。當(dāng)你已經(jīng)在多線程環(huán)境中運行了,記住這點,口己要熟悉背后的運行機制。2.?Lambda表達(dá)式的缺點lambda表達(dá)式。哦‘lambda表達(dá)式。沒有l(wèi)ambda

4、表達(dá)式我們也能做到幾乎一切事悄,但是lambda是那么的優(yōu)雅,擺脫了煩人的代碼,所以很容易就愛上Imbda。比如說早上起來我想遍歷世界杯的球員名單并且知道具體的人數(shù)(有趣的事實:加起來有254個)。Listlengths=newArrayList();for(Stringcountries:Arrays?asList(args)){lengths,add(check(countr)0);}現(xiàn)在我們用一個漂亮的lambda表達(dá)式來實現(xiàn)同樣的功能:Streamlcngths=countries?strc3ni()?map(countri

5、es-

6、daMain.check(LmbdaMain.java:19)atLmbdaMain.ni3in(LmbdaMain.java:34)變成這樣:atLmbdaMain.check(LmbdaMain.java:19)atLmbdaMain.lambda$0(LmbdaMain.java:37)atLmbdaMain$$Lambda$l/821270929.apply(UnknownSource)atjava.util,stream.ReferencePipeline$3$l.accept(ReferencePipeline.java

7、:193)atjava.util.Spliterators$ArraySpliterator?forEachReniQining(Spliterators?java:948)java.uti1.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)atjava.util,stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)atjava.uti1.stream.ReduceOps$Reduce

8、Op.evaluateSequential(ReduceOps.java:708)atjava?uti1.stream?AbstractPipclinc.cvqIuqtc(AbstractPipclinc.jav3:234)atjav

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。