会在子线程完成执行之前退出主线程?会在子线程完成执行之前退出主线程?
我读2篇
http://www.cs.mtu.edu/~shene/NSF-3/e-Book/FUNDAMENTALS/thread-management.html
上述文章中,在“线程终止”对,它在红州“如果父线程终止,它的所有子线程终止为好。 “
http://www.roseindia.net/java/thread/overview-of-thread.shtml
上述文章中,在该页面状态下的最后一行“的main()方法执行就可以完成,但该程序将继续运行,直到所有的线程都完成它的执行。”
我的费用是相互矛盾的。如果我错了,请高手指正我。
在我的程序中,Main方法调用2个线程的构造函数。在各自线程的构造函数中,我有start()方法。
TestA A = new TestA("TestA");
TestB B = new TestB("TestB");
public TestA(String name) {
System.out.println(name);
t = new Thread(this);
t.start();
}
我想知道发生了什么,主线程在子线程完成执行之前终止?如果是这样,那么子线程是否会继续执行?
我试着运行程序,有时候所有的子线程都执行完毕,即使主线程退出。 在2个线程中,我正在处理一些文件。在单独的testA线程A中,单独一个文件没有被处理一些时间。但很多时候,所有的文件都得到处理,我没有任何问题。
感谢您的详细解释。你已经提到“在你的情况下,线程是用户线程,因此在主线程退出前允许完成。”在这里你的意思是“主线程”是Java运行时而不是主方法()的程序。正确? – user1257836 2012-03-11 06:08:03
具有main方法的类和在main方法内部创建的线程都是用户线程。所有这些线程都是独立的并发执行。因为我给了System.out.println(“主要方法的退出”);主要方法的结尾。这会在子线程中的system.out.println()之前打印。这让我觉得主线程(具有main方法的类)甚至可以在子线程之前退出。这种行为是否正确和正确? – user1257836 2012-03-11 06:14:53
您能否澄清一下您的文件锁是什么意思?提前致谢!! – user1257836 2012-03-11 19:01:52