會在子線程完成執行之前退出主線程?會在子線程完成執行之前退出主線程?
我讀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