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

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

JAVA多線程異常處理

JAVA多線程異常處理

往前邁一步 2017-11-17 11:13:08
需求:有一個(gè)list集合,有三個(gè)檢查方法checkA(list), checkB(list), checkC(list),三個(gè)方法從不同角度去檢測(cè)list中的數(shù)據(jù)是否合法,當(dāng)全部檢查都通過時(shí),再進(jìn)行后續(xù)的操作。解決方案:我現(xiàn)在想用ExecutorService創(chuàng)建三個(gè)線程分別調(diào)用三個(gè)檢查方法,提高效率。任何一個(gè)方法中發(fā)現(xiàn)無效數(shù)據(jù)直接拋一個(gè)異常結(jié)束該線程。問題:在主線程調(diào)用三個(gè)線程后,如何在主線程中catch住其中一個(gè)線程的異常,并將其他兩個(gè)線程立即停止?看了一下executorservice的shutdown()方法和shutdownnow(),我理解的是,這兩個(gè)方法都不能保證立即停止線程,不知道我的理解對(duì)嗎?
查看完整描述

1 回答

已采納
?
是王小二呀

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

這么說吧,CPU單核心時(shí),設(shè)計(jì)一個(gè)全局變量作為狀態(tài)值,比如期望值為0,三個(gè)線程分別遍歷檢查list,每次遍歷都去讀這個(gè)狀態(tài)值,只要三個(gè)線程有那一個(gè)在遍歷過程中出錯(cuò),即改變此狀態(tài)值,此時(shí)其他兩個(gè)線程便能監(jiān)控到狀態(tài)變量的改變,此時(shí)跳出遍歷,結(jié)束線程即可。CPU多核心時(shí),三個(gè)線程有可能分給三個(gè)核心去執(zhí)行,此時(shí)涉及到競(jìng)寫,可以對(duì)狀態(tài)值加鎖,也可在主線程再維護(hù)一個(gè)volatile變量,然后在主線程中為三個(gè)線程各自維護(hù)一個(gè)狀態(tài)變量,check方法遍歷時(shí)去檢測(cè)volatile變量,當(dāng)主線程監(jiān)測(cè)到三個(gè)線程其中一個(gè)check出錯(cuò)改變自己的狀態(tài)變量值時(shí),主線程即改變此volatile變量,這時(shí)候呢由于這個(gè)變量的特性,其他兩個(gè)線程會(huì)立即得到volatile變量值的變化,由此跳出遍歷并結(jié)束線程。

查看完整回答
1 反對(duì) 回復(fù) 2017-11-17
  • 1 回答
  • 0 關(guān)注
  • 994 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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