Я хочу, чтобы дочерний поток завершил работу, прежде чем основной поток продолжит свою работу.
После запуска потока я вызываю join
, который, как я думал, завершит работу дочернего потока, прежде чем продолжить работу с основным потоком.но выдает некоторые, я не мог понять, почему он выдает ошибку.
Вот мой код:
class FirstThread implements Runnable{
Thread t;
String threadname;
FirstThread(String name){
threadname = name;
t = new Thread(this,threadname);
System.out.println(name+" Starting");
t.start();
}
public void run(){
try{
for(int i=0; i < 5; i++){
System.out.println(threadname+" : "+ i);
Thread.sleep(500);
}
}catch(InterruptedException e){
System.out.println("Exception: "+ e);
}
}
}
public class ThreadJoin {
public static void main(String args[]){
System.out.println("Starting child Thread");
FirstThread ft = new FirstThread("new thread");
ft.t.join();
try{
for(int i =0; i < 5; i++){
System.out.println("Main : "+i);
Thread.sleep(1000);
}
}catch(InterruptedException e){
System.out.println("Exception : "+ e);
}
}
}
У меня есть следующий код
FirstThread ft = new FirstThread("new thread");
ft.t.join();
, чтобы создатьсоздайте новый поток и завершите сначала, используя ft.t.join
.
но выдает ошибку:
Исключение в потоке "main" java.lang.Error: Неразрешенная проблема компиляции: необработанный тип исключения InterruptedException
в ThreadJoin.main (ThreadJoin.java:29)
номер строки 29
ft.t.join ();
Если удалить вышеуказанную строку, она будет работать нормально.