gpt4 book ai didi

java - Java 多线程中不能使用 join()

转载 作者:行者123 更新时间:2023-12-02 00:10:14 27 4
gpt4 key购买 nike

我有一些关于多线程的问题。我的程序如下:

...
for(int i=0; i< 10; i++)
{
new Thread(){
@Overried
public void run(){
<do something level 1>

<do something level 2>
}
}.start;
}
<do something level 3>
...

我希望主线程仅在所有 10 个线程完成 [执行级别 2] 后才执行 [执行级别 3]。并且在所有子线程完成[执行级别1]的事件发生之前,不要让任何线程执行[执行级别2]。

最佳答案

您应该保留对您启动的线程的引用,以便在它们上调用join

要实现第一件事,您可以这样做:

Thread[] threads = new Thread[10];
for(int i=0; i< 10; i++)
{
threads[i] = new Thread(){
// ...
};
threads[i].start();
}
for(int i=0; i< 10; i++)
{
threads[i].join();
}

对于第二个,您可能应该在主线程中使用 wait 并在子线程中使用 notify (完成任务一后)来发出第一个任务结束的信号部分,然后在子线程上 wait 并在主线程上 notifyAll 以发出所有线程已完成第一部分的信号。

关于java - Java 多线程中不能使用 join(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12984921/

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