首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使在其父线程死掉或终止之后,子线程如何仍然执行?

即使在其父线程死掉或终止之后,子线程如何仍然执行?
EN

Stack Overflow用户
提问于 2014-03-04 05:45:29
回答 3查看 12.8K关注 0票数 11

这是我的两门课:

代码语言:javascript
复制
public class Firstclass {
    public static void main(String args[]) throws InterruptedException {
        System.out.println("Main start....");
        Secondclass t1 = new Secondclass();
        t1.setName("First Thread");
        Secondclass t2 = new Secondclass();
        t2.setName("Second Thread");
        t1.start();
        t2.start();
        System.out.println("Main close...");
    }
}

代码语言:javascript
复制
public class Secondclass extends Thread {
    @Override
    public void run() {
        try {
            loop();
        } catch(Exception e) {
            System.out.println("exception is" + e);
        }
    }

    public void loop() throws InterruptedException {
        for(int i = 0; i <= 10; i++) {
            Thread t = Thread.currentThread();
            String threadname = t.getName();
            if(threadname.equals("First Thread")) {
                Thread.sleep(1000);
            } else {
                Thread.sleep(1500);
            }
            System.out.println("i==" + i);   
        }   
    }    
}

现在,当我运行Firstclass时,输出是:

代码语言:javascript
复制
Main start....
Main close...
i==0
i==0
i==1
i==1
i==2
i==3
i==2
i==4
i==3
i==5
i==6
i==4
i==7
i==5
i==8
i==9
i==6
i==10
i==7
i==8
i==9
i==10

,我的问题是:让我们考虑主方法是由JVM中的线程'T‘执行的,而t1和t2显然是父线程T的子线程,所以当主方法T线程死亡时,T1和T2如何仍然能够执行并给我们输出。因为如果父线程死亡或终止,那么子线程也应该终止或终止。

EN

回答 3

Stack Overflow用户

发布于 2014-03-04 05:47:48

线程之间没有父-子关系的概念。一旦这两个线程开始运行,它们基本上就是对等线程。主线程可以在其他线程仍在运行时退出。

Java没有真正的“子”线程的概念。启动线程时,它从“父”继承守护进程和优先级,但这是父/子关系的结束。

票数 18
EN

Stack Overflow用户

发布于 2014-03-04 05:52:51

Java不知道子线程的概念。你的三个线程被同等对待。接下来是创建守护进程线程,当最后一个java非守护进程线程停止时,这些线程将被终止。

你发的这篇文章是关于一个叫做ThreadMentor的学习系统的。但是这个系统的行为不同于,这不是关于Java的。

这里可能是Javas线程模型的一个良好开端:

http://docs.oracle.com/javase/tutorial/essential/concurrency/

票数 4
EN

Stack Overflow用户

发布于 2016-08-22 15:49:01

在这个应用程序中,主线程首先启动,并且正在运行,即使您已经启动了它们进入就绪状态的t1和t2,但是它们没有运行,当前线程运行的是主线程。一旦主线程完成了它的所有语句,它就不会立即死掉,它将等待直到它完成其子线程的执行。就像在上述情况下发生的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22163922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档