当thread.join()
方法在多线程环境中使用时,其他线程必须等到当前线程完成执行。
有人可以解释一下,它如何影响多线程的性能吗?我的意思是,性能是否真的会因这种join()
条件而降低?
public static void main(String []args) throws Exception{
Runnable run = () -> System.out.println("Inside run");
Thread t[] = new Thread[5];
int i=0;
while(i<5){
t[i]= new Thread(run);
t[i].start();
t[i].join();
i++;
}
}
它确实会影响性能,但仅限于一个线程,即实际调用它。
您的示例的问题在于您在循环中调用 join。因此,主线程(运行循环的线程(在第一个完成之前不会启动第二个线程。
请考虑以下示例。
Runnable run = () -> {
//Some computation here, but NO "performance penalty"
System.out.println("Inside run");
};
Thread t[] = new Thread[5];
int i=0;
while(i<5){
t[i]= new Thread(run);
t[i].start();
i++;
}
while(i<5){
t[i].join();
}
//Some follow-up computation here, but WITH "performance penalty"