主线程退出后子线程是否还会正常运行?
2024-01-07 21:44:45
问题: 父子线程的关系
今天突然有感而发, 想要来探讨一下主线程和子线程之间的关系。
例一:子线程执行时间较父线程慢
public class ThreadTest {
public static void main(String[] args) {
// 测试主线程 和 子线程
Thread sonThread = new Thread(
() -> {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("子线程结束");
}
);
sonThread.start();
System.out.println("父线程结束");
}
}
结果是都进行了执行,这说明主线程执行完毕后,会等待子线程进行执行完毕后退出。
例二:主线程执行的较慢
public class ThreadTest {
public static void main(String[] args) {
// 测试主线程 和 子线程
Thread sonThread = new Thread(
() -> {
System.out.println("子线程结束");
}
);
sonThread.start();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("父线程结束");
}
}
结果也是都进行了执行
而对于Go来说则不一样,Go一旦主线程结束,协程就会自动的退出
例三 主线程执行的较快
func main() {
go func() {
fmt.Println("1111")
}()
fmt.Println("主线程结束")
}
如果想要协程执行完才退出的话,必须使用阻塞来进行控制。
文章来源:https://blog.csdn.net/weixin_49919104/article/details/135436289
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!