Java区分用户线程和另一种称为守护程序线程的线程。这两种类型的线程之间的区别在于,如果JVM确定在应用程序中运行的唯一线程是守护程序线程(即,没有用户线程),则Java运行时将关闭应用程序。另一方面,如果至少有一个用户线程处于活动状态,则Java运行时不会终止您的应用程序。
当main()方法最初从Java运行时接收控制时,它将在用户线程的上下文中执行。只要主方法线程或任何其他用户线程保持活动状态,您的应用程序就会继续执行。
在您的情况下,线程是用户线程,因此可以在主线程退出之前完成。
我正在处理一些文件。在testA线程A中,单独的1个文件有时未得到处理。但是很多次
发生上述情况的原因可能是线程退出以外的其他原因。可能是文件锁定,同步问题等。
https://docs.oracle.com/javase/10/docs/api/java/lang/Thread.html:
Java虚拟机启动时,通常只有一个非守护程序线程(通常调用某些指定类的名为main的方法)。Java虚拟机将继续执行线程,直到发生以下任何一种情况:
已调用类Runtime的退出方法,并且安全管理器已允许进行退出操作。不是守护程序线程的所有线程都已死亡,要么通过从调用返回到run方法,要么通过抛出传播到run方法之外的异常引发。



