Вызов для соединения() Гарантируется, что текущий поток прекратит выполнение до тех пор, пока поток, который он соединяет с (другими словами, поток, на который он вызывает join()), завершается.Thread.join не работает
Однако в моей программе оба потока выполняются одновременно. Thread1 не ждет, пока Thread2 завершит выполнение.
Что не так с моей программой?
public class Launcher1 {
public static void main(String[] args) {
JoinExample runnable=new JoinExample();
Thread thread1=new Thread(runnable);
Thread thread2=new Thread(runnable);
thread1.start();
try {
Thread.sleep(2000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
thread2.start();
try {
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class JoinExample implements Runnable{
public void run(){
for(int i=0;i<10;i++){
System.out.println("i:"+i+" "+Thread.currentThread().getName());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Выход:
я: 0 резьбы 0
я: 1 Тема-0
я: 0 Тема-1
я: 2 Резьба-0
я: 1 Тема-1
я: 3 Тема-0
я: 4 Тема-0
я: 2 Тема-1
я: 3 Тема-1
я: 5 тема-0
я: 4 тема-1
я: 6 Тре Свинец-0
я: 7 Тема-0
я: 5 Тема-1
я: 8 Тема-0
я: 6 Тема-1
я: 7 тема-1
я: 9 тема-0
я: 8 тема-1
я: 9 Тема-1
Спасибо, я ценю это! –