Nis*_*mar 3 java multithreading
我有一个简单的java程序。一个主线程 ( main()) 被创建并启动另一个线程t。
class T extends Thread{
@Override
public void run() {
while (true){
System.out.println("Inside thread");
}
}
}
public class Main {
public static void main(String[] args) {
Thread t = new T();
t.start();
//t.join();
System.out.println("end");
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
end
Inside thread
Inside thread
Inside thread
....
....
Run Code Online (Sandbox Code Playgroud)
它无限打印Inside thread。我不是在使用 join() 等待主线程中的子线程。打印结束后主线程不应该退出吗?
更新:
当 Java 虚拟机启动时,通常有一个非守护线程(通常调用某个指定类的名为 main 的方法)。Java 虚拟机继续执行线程,直到发生以下任一情况:
- 已调用 Runtime 类的退出方法并且安全管理器已允许退出操作发生。
- 所有不是守护线程的线程都已死亡,要么是从对 run 方法的调用中返回,要么是通过抛出传播到 run 方法之外的异常。
我找到了原因。第二点澄清了它。我假设所有子线程都将在主线程退出后终止(我错了)并且 JVM 应该关闭。
| 归档时间: |
|
| 查看次数: |
1816 次 |
| 最近记录: |