意外退出線程后自動(dòng)重啟的實(shí)現(xiàn)方法_第1頁(yè)
意外退出線程后自動(dòng)重啟的實(shí)現(xiàn)方法_第2頁(yè)
意外退出線程后自動(dòng)重啟的實(shí)現(xiàn)方法_第3頁(yè)
意外退出線程后自動(dòng)重啟的實(shí)現(xiàn)方法_第4頁(yè)
意外退出線程后自動(dòng)重啟的實(shí)現(xiàn)方法_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、意外退出線程后自動(dòng)重啟的實(shí)現(xiàn)方法自動(dòng)重啟故障相信大家都遇到過,原因也有很多,跟系統(tǒng),硬件或者外界因素都有關(guān)。下面小編就為大家?guī)硪黄狫ava線程監(jiān)聽,意外退出線程后自動(dòng)重啟的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧Java線程監(jiān)聽,意外退出線程后自動(dòng)重啟前一天寫了一個(gè)微博爬行程序,主要工作原理就是每隔2分鐘爬行一次微博,獲取某 N個(gè)關(guān)注朋友微博數(shù)量,然后將其保存 起來,2分鐘之后再次爬行,再取 其微博數(shù)量,與2分鐘前保存的 微博數(shù)量比較,如果數(shù)量增加,說明該好友在此2分鐘之內(nèi)發(fā)布微博, 如果數(shù)量減少,則是刪除微博。最后將爬行結(jié)果發(fā)送到指定手機(jī)上,

2、作為通知!今天看微博時(shí)發(fā)現(xiàn)自己關(guān)注的朋友發(fā)布了微博, 然而自己手 機(jī)卻沒有收到報(bào)警消息,查看爬行日志發(fā)現(xiàn),在凌晨6點(diǎn)鐘時(shí),公司 網(wǎng)絡(luò)曾經(jīng)斷網(wǎng),導(dǎo)致網(wǎng)絡(luò)堵 塞,程序在爬行的時(shí)候拋出網(wǎng)絡(luò)異常Unkn ow nH ostException,此時(shí)線程就已經(jīng)死掉,猝死。為解決此問題,現(xiàn)有如下需求:線程死掉之后會(huì)自動(dòng)重啟。常規(guī)解決辦法有2種:1,開啟另外一個(gè)線程,監(jiān)聽爬行線程,使用線程之間的通 信,一般是消費(fèi)者模式,如果爬行線程死掉之后,監(jiān)聽線程會(huì)收到通 知,但是如果監(jiān)聽線程先死掉,那么系統(tǒng)也就掛了 !2,使用心跳機(jī)制,爬行線程每隔一段時(shí)間往另一服務(wù)器進(jìn)程發(fā)送數(shù)據(jù)包,如果服務(wù)器進(jìn)程長(zhǎng)時(shí)間沒有收到心跳包,則

3、說明爬行線程已經(jīng)死機(jī)!兩種方法都有合適的使用范圍,但是對(duì)于監(jiān)聽線程猝死這種 情況,個(gè)人覺得是使用觀察者模式比較合適!現(xiàn)說明一下觀察者模式。觀察者模式:定義對(duì)象之間的一種一對(duì)多的依賴關(guān)系,當(dāng)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并且被自動(dòng)更 新。觀察者模式在JDK中有現(xiàn)成的實(shí)現(xiàn),java.util.Obserable ,如何進(jìn)行監(jiān)聽線程,請(qǐng)看例子:被監(jiān)聽的線程類:package cn. std.test;import java.util.Observable;import cn. std.util.DateUtil;public classRun Threadexte ndsObse

4、rvableimpleme nts Runn able/此方法一經(jīng)調(diào)用,立馬可以通知觀察者,在本例中是監(jiān)聽線程publicvoid doBus in ess()if(true)super.setCha nged();3e.pri ntStackTrace();Overridepublicvoid run() intc = 0;while(true) /模擬線程運(yùn)行一段時(shí)間之后退出System.out.pri ntl n(&qu ot;R uning-"+c+&qu ot;"+DateUtil.getStdDateTime();tryThrea

5、d.sleep(2000);catch (In terruptedExcepti on e) doBus in ess();break;C+;/模擬拋出異常tryif(c= 4)Strin gstr = n ull;str.le ngth();此處將會(huì)拋出空指針異常5un .addObserver(liste n);e.pri ntStackTrace();doBusiness();在拋出異常時(shí)調(diào)用,通知觀察者,讓其重啟 線程break;/異常拋出之后,一定要跳出循環(huán),保證將線程送進(jìn) 地獄publicstatic void main( Stri ng args) Run Threadr un

6、二 new Run Thread();Liste ner liste n 二 new Liste ner();n ewThread(ru n).start();/run. doBus in ess();被監(jiān)聽的線程需要繼承Observable類,繼承之后輕松變身 為被觀察者doBus in ess方法,此處可以加上你的業(yè)務(wù)處理內(nèi)容,接 下來是Listenerpackage cn. std.test;import java.util.Observable;import java.util.Observer;public class Liste ner impleme nts Observer7p

7、ublicvoid update(Observable o, Object arg) System.out.pri ntln(&qu ot;R un Thread死機(jī) ");Run Threadr un 二 new Run Thread();run .addObserver(this);n ewThread(ru n).start();System.out.pri ntln(&qu ot;R un Thread重啟 ");很簡(jiǎn)單,只要實(shí)現(xiàn)Observer接口,實(shí)現(xiàn)其update方法,在方法內(nèi)部重啟線程補(bǔ)充:電腦總是自動(dòng)重啟怎么辦1、右擊“我的

8、電腦”,選擇“屬性”項(xiàng)2、在打開的系統(tǒng)屬性窗口中選擇“高級(jí)系統(tǒng)設(shè)置”項(xiàng)進(jìn)入。3、在打開的“系統(tǒng)屬性”窗口中,切換至“高級(jí)”選擇卡, 然后點(diǎn)擊“系統(tǒng)和故障恢復(fù) 設(shè)置”按鈕。4、在打開的窗口中取消勾選“自動(dòng)重啟啟動(dòng)”項(xiàng)并按確認(rèn) 即可。5、當(dāng)電腦在使用的過程中產(chǎn)生藍(lán)屏?xí)r,我們就可以進(jìn)入“系 統(tǒng)日志”管理器中查看產(chǎn)生系統(tǒng)失敗的根源啦。 打開“運(yùn)行”對(duì)話框, 輸入命令“ eventvwr.msc ”即可查看日志信息,從中定位系統(tǒng)產(chǎn)生 失敗的原因。6、當(dāng)然,我們也可以通過禁用某些開機(jī)項(xiàng)來嘗試修復(fù)系統(tǒng)。 打開“運(yùn)行”對(duì)話框,輸入命令“ msconfig ”進(jìn)入“系統(tǒng)配置實(shí)用 程序”界面,勾選“常規(guī)”選項(xiàng)卡下

9、的“診斷啟動(dòng)”選項(xiàng)。7、還有一種修復(fù)計(jì)算機(jī)藍(lán)屏或重啟故障的方法,就是在電 腦啟動(dòng)時(shí)按“ F8”進(jìn)入系統(tǒng)故障菜單,從中選擇“安全模式”進(jìn)入或12“最后一次正確的配置”項(xiàng)進(jìn)入系統(tǒng),將及有可能修復(fù)系統(tǒng)。8、當(dāng)然,如果以上方法均不能解決問題,那么建議您還是重新安裝一下系統(tǒng),畢竟安裝系統(tǒng)所耗費(fèi)的時(shí)間相對(duì)修復(fù)所用時(shí)間要少許多。一勞永逸之事才是王道。相關(guān)閱讀:電腦自動(dòng)重啟方法方法一:1、打開控制面板-管理工具-計(jì)劃任務(wù)程序2、創(chuàng)建基本任務(wù),名稱欄目,輸入“定時(shí)重啟”,下一步;3、在窗口里,有每天、每周、每月、一次各種選擇,這里小誠(chéng)選擇一次,這次執(zhí)行完就失效,您可以根據(jù)自己的情況進(jìn)行選擇哈,點(diǎn)擊下一步;4、設(shè)置重啟的日期、時(shí)間點(diǎn),下一步;5、選擇啟動(dòng)程序,下一步;6、在打開頁(yè)面里,點(diǎn)擊瀏覽,找到C;WindowsSystem32Shutdown.exe,點(diǎn)擊打開;7、在添加參數(shù)欄目里輸入“ -r ” (重啟),進(jìn)行下一步8、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論