線程加監(jiān)聽(tīng)功能 【意外退出線程后自動(dòng)重啟】

Java線程監(jiān)聽(tīng),意外退出線程后自動(dòng)重啟

業(yè)務(wù)需求:因?yàn)樽髡叩臉I(yè)務(wù)需要線程一直循環(huán)監(jiān)聽(tīng)某個(gè)端口發(fā)過(guò)來(lái)的數(shù)據(jù)并進(jìn)行分析處理。然而發(fā)現(xiàn)循環(huán)某次線程出現(xiàn)未知錯(cuò)誤會(huì)導(dǎo)致整個(gè)監(jiān)聽(tīng)線程自動(dòng)終止。所以需要線程某次出現(xiàn)錯(cuò)誤中止時(shí)可以監(jiān)聽(tīng)到,并且重新啟動(dòng)監(jiān)聽(tīng)數(shù)據(jù)的線程。讓監(jiān)聽(tīng)業(yè)務(wù)不會(huì)斷開(kāi)。下面介紹如何實(shí)現(xiàn):

首先添加一個(gè)Listener類,為監(jiān)聽(tīng)類。

然后重寫(xiě)監(jiān)聽(tīng)類的update方法,其實(shí)這個(gè)方法就是在線程出現(xiàn)未知異常,線程被迫終止的時(shí)候調(diào)用,因?yàn)樽髡呦氘?dāng)線程出現(xiàn)未知錯(cuò)誤終止的時(shí)候,程序自動(dòng)重新啟動(dòng),所以就在update的方法繼續(xù)啟動(dòng)這個(gè)線程。

好了,到這里監(jiān)聽(tīng)類就寫(xiě)完了。接下來(lái)就是線程類。線程類除了常規(guī)實(shí)現(xiàn)Runnable,還需要繼承Observable


n

線程類除了繼承的改動(dòng),第一步:需要添加一個(gè)doBusiness方法,

第二步:則是在run方法進(jìn)行try catch,catch的時(shí)候執(zhí)行doBusiness方法,進(jìn)行監(jiān)聽(tīng)并調(diào)用重啟線程操作


(還有一個(gè)問(wèn)題:在catch的時(shí)候必須break進(jìn)行跳出循環(huán))

好了,到了最后一個(gè)步驟了。就是改動(dòng)

main類主線程


第三步:需要將監(jiān)聽(tīng)的線程通過(guò)addObserver方法加入執(zhí)行線程里,再啟動(dòng)執(zhí)行線程


好了,線程加監(jiān)聽(tīng)功能完成。


2019-03-26

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容