假设我有一个主线程和一个普通线程,它们的执行时间比前者长。
类似的东西:
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/