java - 在实际关闭主线程之前是否总是需要等待每个线程终止?

标签 java multithreading

假设我有一个主线程和一个普通线程,它们的执行时间比前者长。

类似的东西:

public class Test{
     private int count;

     public void doTest(){
        (new MyThread()).start();

     }
     public static void main(String[] args){
           Test t = new Test();
           t.doTest();
     }

     private class MyThread extends Thread{
            public void run(){
                 while(count < 100){
                     count++;
                     ..wait some secs ...
                 }

            }

     }

就这样留下代码是错误的吗?或者在线程上执行 join() 以确保它正确结束会更正确吗?

最佳答案

这是其中一个问题,答案是:视情况而定。

在所有其他线程终止之前,没有技术理由让主线程运行。事实上,您可以像处理其他线程一样处理主线程。正如我建议不要让线程在已经完成其业务并可以终止时保持 Activity 状态,只启动其他线程的主线程应该在启动其他线程后简单地终止。

提醒:当主线程终止时,JVM 本身并没有终止。只有当所有非守护线程都终止时,JVM 才会终止。

关于java - 在实际关闭主线程之前是否总是需要等待每个线程终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24910009/

相关文章:

java - Java中的线程管理

java - 为什么 clone() 方法保留在 Object 中?

java - 存储和内存方面的float或double类型

java - 将 UTF-8 转换为字符串

java - ExecutorService,如何在不阻塞主线程的情况下知道所有线程何时完成?

c++ - std::lock_guard 导致未定义的行为

java - 如何将主函数中的变量同步到新线程?

java - 找到最近点(几何点)

ios - 使用 Obj-C 锁定

c# - 为什么 Microsoft Visual C# 2008 Express Edition 调试器随机退出?