午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java8Stream異常處理

瀏覽:214日期:2024-02-04 11:01:34

問(wèn)題描述

我也是剛用上Java8的Stream,所有的一切都還在照貓畫(huà)虎的階段。

在異常處理這塊不敢貿(mào)然前進(jìn),因?yàn)槲铱吹侥称牡倪@樣一段話(huà)

在單線(xiàn)程環(huán)境中,使用捕獲受檢異常并重新拋出非受檢異常的方法是可行的。但是在多線(xiàn)程環(huán)境這樣用,就存在一些風(fēng)險(xiǎn)。

多線(xiàn)程環(huán)境中,Lambda表達(dá)式中發(fā)生的錯(cuò)誤會(huì)被自動(dòng)傳遞到主線(xiàn)程中。這會(huì)帶來(lái)兩個(gè)問(wèn)題:

這不會(huì)停止其他正在并行執(zhí)行的Lambda表達(dá)式。如果有多個(gè)線(xiàn)程拋出了異常,在主線(xiàn)程中卻只能捕獲到一個(gè)線(xiàn)程中的異常。如果這些異常信息都很重要的話(huà),那么更好的方法是在Lambda表達(dá)式中就進(jìn)行異常處理并將異常信息作為結(jié)果的一部分返回到主線(xiàn)程中。

我現(xiàn)在是用的Stream流的Map方法,當(dāng)然用的是并發(fā),想在map里的方法里只要有一個(gè)出錯(cuò)就讓他停下來(lái),不運(yùn)行其他的。。這個(gè)需求該怎么搞。。

paths.stream() .map(path -> {try { return new File(path).getCanonicalPath();} catch(IOException ex) { throw new RuntimeException(ex);} }) .forEach(System.out::println);

我用了這種方法確實(shí)停下來(lái)了,那還有什么好的方法,或者說(shuō)是否有何問(wèn)題,這樣的話(huà)就拿不到具體哪個(gè)線(xiàn)程有問(wèn)題了吧

問(wèn)題解答

回答1:

你的思維模式就不對(duì),map filter 這類(lèi)不是語(yǔ)法糖, java8還是有函數(shù)式編程能力的。函數(shù)式的核心是不變性,這里不是要求取消變量,而是要建立一種等價(jià)思維,以求值 > 過(guò)程的方式去思考問(wèn)題。

你的例子,比如要求在map中停下來(lái)這就在設(shè)計(jì)之外,因?yàn)閙ap的語(yǔ)意保證了它一定會(huì)遍歷完所有數(shù)據(jù),返回的類(lèi)型一定一致,而且長(zhǎng)度相同。同樣貿(mào)然拋出rumtime exception也是非常的不優(yōu)雅。

有幾個(gè)方案,使用optional或者either(這個(gè)官方不提供,需要自己弄一個(gè))來(lái)包裝你的返回類(lèi)型來(lái)保證map語(yǔ)義(把錯(cuò)誤放到返回值里去,但是類(lèi)型不變,具體可以百度)

如果你的數(shù)據(jù)有前后關(guān)系,使用fold(reduce)來(lái)處理而不是map。

不使用stream而用回for break,編程其實(shí)就是編程,關(guān)鍵是解決問(wèn)題,針對(duì)問(wèn)題來(lái)選擇最好的方案,有的時(shí)候steam方案不如傳統(tǒng)的for,fork/join也不如手工sync notify。

另,stream的并行其實(shí)沒(méi)有你想的那么好,濫用了copyonwrite,我自己玩過(guò)一陣之后幾乎再也不用了。不過(guò) java8有個(gè)completableFuture估計(jì)能滿(mǎn)足你的要求。

回答2:

CountDownLatch(1)

catch異常時(shí):

CountDownLatch.countDown();

最后:

CountDownLatch.await();xxx.stop();

Java8的Stream沒(méi)用過(guò)了。。。

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 日韩在线91| 欧美 日韩 中文字幕 | 九九热这里只有精品6 | 久久最新免费视频 | 国产主播精品 | 成人在线亚洲 | 日本免费黄色小视频 | 一区二区三区免费视频观看 | 欧洲av一区 | 黄色在线一区 | 久操视频免费看 | 男女爽爽爽免费视频 | 久久草视频在线 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 手机看片欧美日韩 | 亚洲精美视频 | 国产精品不卡在线观看 | 一级片一区 | 欧美人与性动交g欧美精器 久久久午夜精品 | 午夜视频免费在线 | 神马影院一区二区三区 | 青娱乐欧美 | 久久影片 | 秋霞不卡| 波多野结衣一级 | 久久久久久久免费 | 香蕉视频首页 | 青青青草视频在线 | 日本中文字幕在线观看 | 国产亚洲精品精品精品 | 亚洲无人区码一码二码三码 | 国产成年人在线观看 | 国产精品久久久久永久免费看 | 天天草天天射 | 青青操免费在线视频 | 四虎永久免费在线观看 | 激情图片在线观看 | 婷婷操 | 我想看黄色一级片 | 水果派av解说 | 免费在线毛片 |