麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

當主線程崩潰而其它線程繼續運行時發生什么(2)

2019-11-18 13:54:23
字體:
來源:轉載
供稿:網友

  診斷這種崩潰的一個輔助手段是捕捉由各種線程拋出的異常并在退出之前通知該問題的依靠線程。這正是我在清單 2 中所做的。

清單 2. 把錯誤通知給客戶機線程的示例
import java.util.Vector;

public class Server2 extends Thread {
Client2 client;
int counter;

public Server2(Client2 _client) {
this.client = _client;
this.counter = 0;
}

public void run() {
try {
while (counter < 10) {
this.client.queue.addElement(new Integer(counter));
counter++;
}
throw new RuntimeException("counter >= 10");
}
catch (Exception e) {
this.client.interruptFlag = true;
throw new RuntimeException(e.toString());
}
}

public static void main(String[] args) {
Client2 c = new Client2();
Server2 s = new Server2(c);
c.start();
s.start();
}
}

class Client2 extends Thread {
Vector queue;
boolean interruptFlag;

public Client2() {
this.queue = new Vector();
this.interruptFlag = false;
}

public void run() {
while (! interruptFlag) {
if (! (queue.size() == 0)) {
PRocessNextElement();
}
}

// Processes whatever elements remain on the queue before exiting.
while (! (queue.size() == 0)) {
processNextElement();
}
System.out.flush();
}

private void processNextElement() {
Object next = queue.elementAt(0);
queue.removeElementAt(0);
System.out.println(next);
}
}



處理被拋出的異常的其它選項可能是調用 System.exit。這個選項在程序的主線程發生崩潰而其它線程不治理任何臨界資源的時候是有意義的。然而在其它情況下,這可能是危險的。例如,考慮這樣一個示例,其它線程中的一個正在治理一個打開的文件。假如這是實際的情況,那么只是退出程序會導致資源泄漏。

即使在上面的簡單示例中,在 server 線程中調用 System.exit 也會導致 client 未處理其隊列上的任何剩余元素就退出。

事實上,就是這樣的問題促使 Sun 不建議線程的 stop 方法。由于強行停止一個線程會使資源陷入非一致狀態,所以 stop 方法破壞了語言的安全性模型。

想了解 Sun 的更多不建議理由,請參閱參考資料。

總結
這里是本周錯誤模式的總結:

模式:孤線程


癥狀:一個鎖定多線程程序,它具有或不具有將堆棧跟蹤打印到標準錯誤。


致因:多個程序線程一直等待來自某個線程的輸入,而該線程在拋出一個未被捕捉的異常后就退出了。


治療和預防措施:把異常處理代碼放到主線程中以在崩潰來臨之際通知依靠線程。
參考資料

參加本文的討論論壇。


閱讀關于為什么不建議 Thread.stop 的 Sun 的解釋。


Neel V. Kumar 在他的文章“Java 程序中的多線程”(developerWorks,2000 年 3 月)中提供調試多線程 Java 的途徑。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 看黄在线观看 | 免费观看一级黄色片 | 天天夜夜操操 | 久久免费综合视频 | 在线无码| 成年人国产视频 | 亚洲成人福利在线 | 超碰97人人艹 | 亚洲网站在线观看视频 | 日本欧美一区二区三区在线播 | 男女一边摸一边做羞羞视频免费 | 日日狠狠久久 | 久久免费视频一区二区三区 | 久久伊人国产精品 | 成人午夜精品久久久久久久蜜臀 | 一区二区三高清 | 色综合久久久久久久久久久 | 中文字幕视频在线播放 | 久久艳片 | 青草av.久久免费一区 | 亚洲欧美一区二区三区在线观看 | 黄色特级一级片 | 国产不卡av在线 | 一边吃奶一边摸下娇喘 | 99欧美精品 | 亚洲成人中文字幕在线 | 精品一区二区三区免费毛片 | 精品一区二区三区免费爱 | 日本s级毛片免费观看 | 日本在线视频免费观看 | 一二区电影 | 一级做a爱片久久毛片a高清 | 国产一级午夜 | 成熟女人特级毛片www免费 | 一级毛片播放 | 吾色视频 | 中日韩乱码一二新区 | 久久网日本 | 日本一区二区三区视频在线 | 精品一区二区免费 | 日韩一级网站 |