Допустим, у нас есть следующая программа на C ++
void hello (){
std :: cout << "HELLO"<<std::endl ;
}
int main(){
std:: thread t(hello) ;
t.join() ;
}
Если мы не вызовем join в этом коде, наша программа завершится сбоем, потому что основной поток завершится до завершения потока t1.
Но если у нас одна и та же программа на Java, программа выполняется нормально, даже если main не ожидает потока.
public class HelloWorld {
public static void main(String[] args) {
Thread t = new Thread(new Hello());
t.start();
}
}
class Hello implements Runnable {
public void run() {
System.out.println("Hello") ;
}
}
Так почему в Java программа не падает? как выполняется поток, даже если основной заканчивается первым?