9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦 > 學習電腦 > 電腦故障 > 電腦故障現象 > 自動重啟 >

意外退出線程后自動重啟的實現方法

時間: 加城1195 分享

  自動重啟故障相信大家都遇到過,原因也有很多,跟系統,硬件或者外界因素都有關。下面小編就為大家帶來一篇Java線程監聽,意外退出線程后自動重啟的實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

  Java線程監聽,意外退出線程后自動重啟

  前一天寫了一個微博爬行程序,主要工作原理就是每隔2分鐘爬行一次微博,獲取某N個關注朋友微博數量,然后將其保存起來,2分鐘之后再次爬行,再取 其微博數量,與2分鐘前保存的微博數量比較,如果數量增加,說明該好友在此2分鐘之內發布微博,如果數量減少,則是刪除微博。最后將爬行結果發送到指定手機上,作為通知!

  今天看微博時發現自己關注的朋友發布了微博,然而自己手機卻沒有收到報警消息,查看爬行日志發現,在凌晨6點鐘時,公司網絡曾經斷網,導致網絡堵 塞,程序在爬行的時候拋出網絡異常UnknownHostException,此時線程就已經死掉,猝死。為解決此問題,現有如下需求:線程死掉之后會自動重啟。

  常規解決辦法有2種:

  1,開啟另外一個線程,監聽爬行線程,使用線程之間的通信,一般是消費者模式,如果爬行線程死掉之后,監聽線程會收到通知,但是如果監聽線程先死掉,那么系統也就掛了!

  2,使用心跳機制,爬行線程每隔一段時間往另一服務器進程發送數據包,如果服務器進程長時間沒有收到心跳包,則說明爬行線程已經死機!

  兩種方法都有合適的使用范圍,但是對于監聽線程猝死這種情況,個人覺得是使用觀察者模式比較合適!現說明一下觀察者模式。

  觀察者模式:定義對象之間的一種一對多的依賴關系,當對象的狀態發生改變時,所有依賴于它的對象都得到通知并且被自動更新。

  觀察者模式在JDK中有現成的實現,java.util.Obserable,如何進行監聽線程,請看例子:

  被監聽的線程類:

  package cn.std.test;

  import java.util.Observable;

  import cn.std.util.DateUtil;

  public class RunThread extends Observableimplements Runnable{

  // 此方法一經調用,立馬可以通知觀察者,在本例中是監聽線程

  publicvoid doBusiness(){

  if(true){

  super.setChanged();

  }

  notifyObservers();

  }

  @Override

  publicvoid run() {

  intc = 0;

  while(true){ //模擬線程運行一段時間之后退出

  System.out.println("Runing- "+c+" "+DateUtil.getStdDateTime());

  try{

  Thread.sleep(2000);

  }catch (InterruptedException e) {

  e.printStackTrace();

  doBusiness();

  break;

  }

  c++;

  //模擬拋出異常

  try{

  if(c== 4){

  Stringstr = null;

  str.length();//此處將會拋出空指針異常

  }

  }catch (Exception e) {

  e.printStackTrace();

  doBusiness();//在拋出異常時調用,通知觀察者,讓其重啟線程

  break;//異常拋出之后,一定要跳出循環,保證將線程送進地獄

  }

  }

  }

  publicstatic void main(String[] args) {

  RunThreadrun = new RunThread();

  Listener listen = new Listener();

  un.addObserver(listen);

  newThread(run).start();

  //run.doBusiness();

  }

  }

  被監聽的線程需要繼承Observable類,繼承之后輕松變身為被觀察者doBusiness方法,此處可以加上你的業務處理內容,接下來是Listener

  package cn.std.test;

  import java.util.Observable;

  import java.util.Observer;

  public class Listener implements Observer{

  @Override

  publicvoid update(Observable o, Object arg) {

  System.out.println("RunThread死機");

  RunThreadrun = new RunThread();

  run.addObserver(this);

  newThread(run).start();

  System.out.println("RunThread重啟");

  }

  }

  很簡單,只要實現Observer接口,實現其update方法,在方法內部重啟線程

  補充:電腦總是自動重啟怎么辦

  1、右擊“我的電腦”,選擇“屬性”項。

  2、在打開的系統屬性窗口中選擇“高級系統設置”項進入。

  3、在打開的“系統屬性”窗口中,切換至“高級”選擇卡,然后點擊“系統和故障恢復 設置”按鈕。

  4、在打開的窗口中取消勾選“自動重啟啟動”項并按確認即可。

  5、當電腦在使用的過程中產生藍屏時,我們就可以進入“系統日志”管理器中查看產生系統失敗的根源啦。打開“運行”對話框,輸入命令“eventvwr.msc”即可查看日志信息,從中定位系統產生失敗的原因。

  6、當然,我們也可以通過禁用某些開機項來嘗試修復系統。打開“運行”對話框,輸入命令“msconfig”進入“系統配置實用程序”界面,勾選“常規”選項卡下的“診斷啟動”選項。

  7、還有一種修復計算機藍屏或重啟故障的方法,就是在電腦啟動時按“F8”進入系統故障菜單,從中選擇“安全模式”進入或“最后一次正確的配置”項進入系統,將及有可能修復系統。

  8、當然,如果以上方法均不能解決問題,那么建議您還是重新安裝一下系統,畢竟安裝系統所耗費的時間相對修復所用時間要少許多。一勞永逸之事才是王道。

  相關閱讀:電腦自動重啟方法

  方法一:

  1、打開控制面板-管理工具-計劃任務程序

  2、創建基本任務,名稱欄目,輸入“定時重啟”,下一步;

  3、在窗口里,有每天、每周、每月、一次各種選擇,這里小誠選擇一次,這次執行完就失效,您可以根據自己的情況進行選擇哈,點擊下一步;

  4、設置重啟的日期、時間點,下一步;

  5、選擇啟動程序,下一步;

  6、在打開頁面里,點擊瀏覽,找到C;\Windows\System32\Shutdown.exe,點擊打開;

  7、在添加參數欄目里輸入“-r”(重啟),進行下一步

  8、點擊完成,即可實現自動重啟了

  方法二:

  網上搜索個自動重啟關機類軟件,這比較多,簡單設置一下就可以了。


自動重啟的實現方法相關文章:

1.電腦怎么設置自動重啟

2.怎么樣讓電腦實現自動重啟關機

3.電腦斷電之后自動重啟設置怎么設置

4.tp-link怎么設置自動重啟

5.電腦怎么設置來電就自動重啟

4023013 主站蜘蛛池模板: 亚洲中文久久久精品无码| 国产一区二区日韩经典| 亚洲一区二区三区在线播放无码| 久天啪天天久久99久孕妇| 自拍偷拍一区二区三区四| 国产在线观看免费观看不卡| 欧美日本在线一区二区三区| 日本高清一区免费中文视频| 免费看亚洲一区二区三区| 这里只有精品免费视频| 视频一区二区不中文字幕| 欧美大胆老熟妇乱子伦视频| 久久国产综合色免费观看| 国产精品自在自线视频| 国产无遮挡无码视频在线观看| 伊人久久大香线蕉成人| 亚洲日本欧美日韩中文字幕| 日韩免费无码视频一区二区三区| 97久久超碰国产精品2021| 国产日产精品系列| 日本一区二区三深夜不卡| 漂亮的保姆hd完整版免费韩国| 久久久久国产精品人妻| 在线人成免费视频69国产| 欧美不卡无线在线一二三区观 | 国产永久免费高清在线| 久久美女夜夜骚骚免费视频| 毛片免费观看天天干天天爽 | 久久热这里只有精品99| 欧美高清一区三区在线专区| 免费无码观看的AV在线播放| 无码AV无码免费一区二区| 午夜福利一区二区在线看| 国产精品亚洲欧美大片在线看| 亚洲中文一区二区av| 国产资源精品中文字幕| 国产精品福利自产拍久久| 国产三级精品三级在线区| 国产一区二区三区九精品| 亚洲成A人片在线观看无码不卡| 精品国产乱子伦一区二区三区|