Tôi tin rằng chủ đề chính không thể chết trước chuỗi con. Nhưng có cách nào để kiểm tra điều đó không? Tôi đã viết một chương trình đơn giản dưới đây. Bất cứ ai có thể chứng minh nó thực tế để lại lý thuyết sang một bên?Chủ đề chính có thể chết trước chủ đề con
class childre extends Thread
{
public void run()
{
for(int i=0 ; i<10 ;i++)
{
System.out.println(" child " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class ChildThreadb4main
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
System.out.println("main");
childre c1 = new childre();
c1.start();
for(int i=0;i<5;i++)
{
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(" child thread alive ? " + c1.isAlive());
}
}
Sau khi gợi ý từ James. Tôi đã thử chương trình sau.
public class MainChildDie {
public static void main(String ar[]){
final Thread mainThread = Thread.currentThread();
System.out.println("main run ");
new Thread(){
public void run(){
Thread childThread= Thread.currentThread();
for(int i=0; i<10;i++){
System.out.println("child"+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("main alive " + mainThread.isAlive());
}
}.start();
}
}
Không có gì đặc biệt về chuỗi "chính". Nó chỉ là một trong những đầu tiên bạn nhìn thấy (có những người khác mà là daemon chủ đề) Nếu bạn thực hiện tất cả các "nền" chủ đề của bạn, daemon chủ đề, chương trình sẽ thoát ra khi thoát chính. Nếu không, chương trình sẽ tiếp tục chạy. –