多线程中的 join() 方法是否会影响并发性



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"

最新更新