gpt4 book ai didi

java - 在java中同步线程

转载 作者:搜寻专家 更新时间:2023-11-01 01:06:44 25 4
gpt4 key购买 nike

我正在为多线程实现 java Runnable 接口(interface)。我有一些 n 个线程。每个线程都有自己的生命。我想等到所有线程的生命都到期。假设情况如下

for(int i = 0; i< k;i++){
Thread thread1 = new Thread(new xyz())
Thread thread2 = new Thread(new abc())
Thread thread3 = new Thread(new mno())
thread1.start();
thread2.start();
thread3.start();
}

我正在执行以下操作以同步它。我不知道这是否正确。请让我知道我该怎么做?有什么方法可以检查我的线程程序是否正常工作?

          if(thread2.isAlive())
try {
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
if(thread1.isAlive())
try {
thread1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
if(thread3.isAlive())
try {
thread3.join();
} catch (InterruptedException e) {
e.printStackTrace();
}

最佳答案

您可以将您的 Runnable 添加到 ExecutorService并调用shutdown/awaitTermination一旦所有任务完成,它将返回。 javadoc 中有一些示例 - 总而言之,您可以编写如下内容:

ExecutorService executor = Executors.newFixedThreadPool(3);

executor.submit(runnable1);
executor.submit(runnable2);
executor.submit(runnable3);

executor.shutdown();
boolean allRunnableAreDone = executor.awaitTermination(60, TimeUnit.SECONDS);

// This line is reached once all runnables have finished their job
// or the 60 second timeout has expired

关于java - 在java中同步线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11248182/

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