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

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

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

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

  內容:
孤線程模式
癥狀
治療和預防措施
總結
參考資料
關于作者
對本文的評價


當主線程崩潰而其它線程繼續運行時發生什么?
Eric E. Allen([email protected]
博士研究生候選人,Rice 大學
2001 年 8 月

在多線程代碼中,使用驅動其它線程所負責的動作的單個主線程是常見的。這個主線程發送消息,通常是通過把它們放到一個隊列中,然后其它線程處理這些消息。但是假如主線程拋出一個異常,那么剩余的線程會繼續運行,等待更多輸入到該隊列,導致程序凍結。在診斷 java 代碼的這一部分中,專職 Java 開發者兼兼職捉蟲者 Eric Allen 討論檢測、修復和避免這一錯誤模式。請在討論論壇與作者和其他讀者共享您關于本文的心得。
用多線程編寫代碼對程序員大有好處。多線程能使編程(和程序)進行得快得多,而且代碼能有效得多地使用資源。然而,跟生活中的很多事情一樣,多線程也存在缺點。因為多線程代碼天生是非確定性的,出現錯誤的可能性大得多。而且,確實發生的的錯誤很難重現,因此也更難解決。

孤線程模式
Java 編程語言為多線程代碼提供了豐富的支持,包括一項非凡有用的功能:能夠在一個線程中拋出一個異常而不影響其它線程。但這項功能會導致很多難以跟蹤的錯誤。

快速跟蹤代碼
清單 1.
一個線程之間頻繁通信的示例程序
清單 2.
演示如何捕捉異常并在退出之前通知問題的依靠線程。
從某個線程的崩潰中恢復過來是有意義,在此種情況下,這種能力能增加程序的健壯性級別。然而,它也使我們難以判定這些線程之一在什么時候拋出了一個異常。因為剩余的線程將繼續運行,所以程序會表現出無響應或凍結程序的征兆。對線程之間頻繁通信的程序而言尤其如此。

考慮清單 1 所示的示例,其中的一對線程通過生產者-消費者模型進行通信。

清單 1. 一個簡單的、多線程的消費者-生產者程序
public class Server extends Thread {
Client client;
int counter;

public Server(Client _client) {
this.client = _client;
this.counter = 0;
}

public void run() {
while (counter < 10) {
this.client.queue.addElement(new Integer(counter));
counter++;
}
throw new RuntimeException("counter >= 10");
}

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

class Client extends Thread {
Vector queue;

public Client() {
this.queue = new Vector();
}

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

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



在諸如這樣的案例中,第二個線程接收用于計算的任何數據完全依靠于第一個線程。因此,不可避免地,假如第一個線程崩潰(而在這個樣本中,肯定是這樣的),那么第二個線程將等待永遠不會到來的更多輸入。現在您知道我為什么把這種錯誤叫做孤線程模式。

癥狀
這種錯誤模式最常見的癥狀是我在前面提到的 ? 即,程序好象凍結了。

其它癥狀可能包括打印到程序標準錯誤和標準輸出的堆棧跟蹤實際停止了。

治療和預防措施
一旦診斷出這種錯誤模式,查找并修復在崩潰線程中的潛在的錯誤是顯然的治療之道。但是預防卻困難得多。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 激情小说另类 | 亚洲成人欧美在线 | 性生活视频网站 | 成年免费看| 毛片视频大全 | 日韩毛片一区二区三区 | 万圣街在线观看免费完整版 | 亚洲精品午夜国产va久久成人 | 午夜神马福利视频 | 亚洲精品在线观看网站 | 国产美女的小嫩bbb图片 | 色妞欧美 | 久久精品a一级国产免视看成人 | h久久| 黄色伊人网站 | 欧美五月婷婷 | 久草在线视频网 | 巨根插入 | 中国成人在线视频 | www.69色| 欧美成人小视频 | 一级电影免费 | 一区二区免费看 | 国产成年人视频 | 成人av一区二区免费播放 | 亚洲午夜在线 | 毛片一级免费看 | 香蕉成人在线视频 | 欧美日韩中文字幕在线视频 | 91精品国产日韩91久久久久久360 | 日本在线观看高清完整版 | 欧美国产成人在线 | 美女污污视频在线观看 | 一级黄色国产视频 | 国产精品啪一品二区三区粉嫩 | 国产日本在线 | 亚洲精品aⅴ中文字幕乱码 欧美囗交 | 国产高潮好爽好大受不了了 | 午夜热门福利 | 少妇一级淫片免费放播放 | 国产一区二区三区在线免费观看 |