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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Java 并行流中的異常傳播

Java 并行流中的異常傳播

桃花長(zhǎng)相依 2023-06-08 20:56:17
在 Akka in Action 書中它說(shuō)異常幾乎不可能在開箱即用的線程之間共享,除非您準(zhǔn)備構(gòu)建大量基礎(chǔ)設(shè)施來(lái)處理這個(gè)問(wèn)題。而且,據(jù)我所知,如果并行線程中發(fā)生異常,它將傳播給調(diào)用者。如果這種機(jī)制可行,為什么不用常規(guī)線程來(lái)實(shí)現(xiàn)呢?我錯(cuò)過(guò)了什么嗎?編輯:我說(shuō)的是這樣的可能性:public static void count() {    long count = 0;    try {        count = IntStream.range(1, 10)                .parallel()                .filter(number -> f(number)).count();    } catch(RuntimeException e) {        /* handle */    }    System.out.println("Count - " + count);}public static boolean f(final int number) {    if(Math.random() < 0.1) {        throw new RuntimeException();    }    return true;}parallel() 產(chǎn)生多個(gè)線程,當(dāng)其中任何一個(gè)拋出 RuntimeException 時(shí),該異常仍會(huì)在主線程上捕獲,這似乎與書中的觀點(diǎn)相反。編輯 2:
查看完整描述

1 回答

?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

主要區(qū)別在于,雖然各個(gè) Stream 中間體可以并行運(yùn)行,但僅在遇到終端操作時(shí)才對(duì)其求值;這使它成為一個(gè)虛擬連接點(diǎn)。

即,類似的東西也是可能的

try {    Thread concurrent = new Thread(runnable);
    concurrent.start();
    concurrent.join();
} catch (ExceptionThrownInThread ex) {}

然而,在一般情況下——這幾乎就是 Akka 的編程模型——你有

yourMessenger.registerCallbacks(callbacks);
new Thread(yourMessenger).start();

現(xiàn)在,回調(diào)最終將從您創(chuàng)建的線程中調(diào)用,但沒(méi)有結(jié)構(gòu)將其執(zhí)行作為一個(gè)整體進(jìn)行包裝;那么誰(shuí)會(huì)抓住這個(gè)例外呢?

我對(duì) Akka 了解不夠,但是在 projectreactor 中Publisher,你可以注冊(cè)一個(gè)錯(cuò)誤處理程序,如

Mono<Result> mono = somethread.createResult().onError(errorHandler);

但同樣,在一般情況下,這并非微不足道。


查看完整回答
反對(duì) 回復(fù) 2023-06-08
  • 1 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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