Java:子线程中的异常

use*_*327 5 java exception-handling

在Java中,如果我从A类中的main方法开始一个线程T,并且在T中发生异常,那么A中的main方法将如何知道这一点.如果我没有错,A类的实例和线程T将出现在两个独立的堆栈中,对,那么,线程的父节点如何知道异常?

fal*_*tro 6

简短的回答,它没有.如果异常一直传播出线程,它就会死掉(可能会在控制台上产生一些错误).

您可能感兴趣的是捕获最外层堆栈帧中的所有异常(即启动线程的run-method),它将异常放在队列或其他通信机制上(可能还有一些元数据,如在线程终止之前作为线程id等).然后由父线程定期查询队列(或使用一些其他通知机制来唤醒父线程,例如wait/notify或Condition-objects).