在子线程上抛出runTime异常导致主父线程结束,为什么?

时间:2016-02-29 19:59:50

标签: android multithreading exception-handling

在Android中,但可以在任何Java程序中,我生成一个抛出RunTimeException的子线程。代码如下所示:

    new Thread(new Runnable() {
        @Override
        public void run() {

            throw new RuntimeException();
        }
    }).start();

这完全终止了我的应用程序FatalException错误。我以为只有子线程会结束,但主/父线程可以继续吗?这个假设不正确吗?

3 个答案:

答案 0 :(得分:0)

Android只有主(单)线程。

答案 1 :(得分:0)

非常确定您可以创建自己的异常并在子线程上执行stopSelf()。不确定你正在尝试做什么,或者我举一个例子。

Runnable r = new Runnable()
{
    public void run() {
    while (/*whatever you want to determine end of thread*/)
    {
        try { // this stuff
        } catch (Exception e) { // exception handling
        }
    }
    stopSelf();
    }
};

//Thread start code

这应该可以工作,而不是让您的应用程序崩溃...

答案 2 :(得分:0)

RuntimeException通常只会杀死该线程,但可以杀死该程序。其他事情通常是决定性因素。需要查看更多代码,但这可能是线程中的机器人异常处理问题。