gpt4 book ai didi

java - 如何在所有子线程执行完毕后运行主线程

转载 作者:行者123 更新时间:2023-12-04 11:38:41 24 4
gpt4 key购买 nike

我有一个要求,其中 28 个线程必须完成某些功能。我在匿名内部类中创建了这些线程,例如:

Thread t=new Thread(new Runnable(){public void run() 
{//code
}}
);

t.start();

现在我希望在所有这些线程完成那里的工作后开始进一步的执行。

注意:我对 join() 方法感到困惑,因为它使我的线程按顺序运行。

那么谁能建议我如何在这些线程完成工作后让主线程运行。

最佳答案

Note : I am confused about join() method as it makes my threads run sequentially.

如果你有这样的代码,它会这样做:

for (Runnable runnable : runnables) {
Thread t = new Thread(runnable);
t.start();
t.join();
}

但是,您可以启动所有要并行运行的线程,然后对它们全部调用join。例如:

List<Thread> threads = new ArrayList<>();
for (Runnable runnable : runnables) {
Thread t = new Thread(runnable);
t.start();
threads.add(t);
}
// Now everything's running - join all the threads
for (Thread thread : threads) {
thread.join();
}

// Now you can do whatever you need to after all the
// threads have finished.

当然,还有许多其他方法 - 直接启动线程可能不如使用更高级别的抽象适合您的代码;这取决于您要实现的目标。不过,上面的代码应该可以正常工作 - 假设所有 Runnable 都能够并行运行而不会通过同步相互阻塞。

关于java - 如何在所有子线程执行完毕后运行主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28164990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com