當(dāng)主線程崩潰而其它線程繼續(xù)運(yùn)行時發(fā)生什么? Eric E. Allen(eallen@cs.rice.edu) 博士研究生候選人,Rice 大學(xué) 2001 年 8 月
在多線程代碼中,使用驅(qū)動其它線程所負(fù)責(zé)的動作的單個主線程是常見的。這個主線程發(fā)送消息,通常是通過把它們放到一個隊(duì)列中,然后其它線程處理這些消息。但是假如主線程拋出一個異常,那么剩余的線程會繼續(xù)運(yùn)行,等待更多輸入到該隊(duì)列,導(dǎo)致程序凍結(jié)。在診斷 java 代碼的這一部分中,專職 Java 開發(fā)者兼兼職捉蟲者 Eric Allen 討論檢測、修復(fù)和避免這一錯誤模式。請?jiān)谟懻撜搲c作者和其他讀者共享您關(guān)于本文的心得。 用多線程編寫代碼對程序員大有好處。多線程能使編程(和程序)進(jìn)行得快得多,而且代碼能有效得多地使用資源。然而,跟生活中的很多事情一樣,多線程也存在缺點(diǎn)。因?yàn)槎嗑€程代碼天生是非確定性的,出現(xiàn)錯誤的可能性大得多。而且,確實(shí)發(fā)生的的錯誤很難重現(xiàn),因此也更難解決。