سلام من در مفهوم Thread به مشکل برخوردم ! یه قانون تو Threadها هستش که اگه Thread والد ازبین بره یا بمیره Threadهای فرزندش هم نابود میشن و دیگه اجرا نمیشن. الان من همین مفهوم رو تو متد Main که خودش یه Thread هست تست کردم ولی به مشکل برخوردم. من یه Exception تو main بوجود میارم قاعدتا نباید تردهام ادامه پیدا کنن. چون من اون‌هارو join نکردم.

بهتر بخوام بگم من یک متد main دارم که خودش یک Thread هستش و داخل این متد دو Thread به نام‌های t1 , t2 ساختم که پنج‌بار اسم همون Thread رو در خروجی چاپ میکنن. بعد اینکه دو Thread t1 , t2 رو استارت کردم یک Exception در انتهای main توسط 1/0 ایجاد کردم. همون جوری که میدونیم چون اولویت Thread متد main بالاتراز دیگر Threadها هستش اول این Thread به انتها میرسه پس این Exception رخ میده و Thread متد main میمیره یا ازبین میره ولی مشکل اینجاست که هر دو Thread من t1 , t2 تا انتها انجام میشن و بعد برنامه بسته میشه چرا؟ مگه با بسته شدن Thread main نباید دیگر Threadها ازبین برن!؟


public class Main {
public static void main(String[] args) {

Thread t1 = new Thread(){
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName( ));
}
}

};
Thread t2 = new Thread(){
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName( ));
}
}

};

t1.setName("T1");
t2.setName("T2");

t1.start();
t2.start();

System.out.println(1/0);
}

}