gpt4 book ai didi

java - 为什么我的线程停止工作后无法运行 main() 中的语句?

转载 作者:行者123 更新时间:2023-11-30 01:57:02 24 4
gpt4 key购买 nike

所以我有一个有 4 个线程的程序,所有线程都在运行。其中 3 个线程始终运行,即使程序完成其工作也是如此。所以我创建了一些变量,让它们停止。

我将 while(true) 更改为 while(exit),程序运行正常。

在线程之后,我想运行一些其他语句,但前提是线程已停止。

我尝试使用 4 个变量,exit、exit1、exit2、exit3 并将它们设置为 false。线程将完成并使这些变量为真。

在main中,在Thread.start()之后,如果我想打印一些东西,它不会打印。

Thread1.start();
Thread2.start();
Thread3.start();
Thread4.start();

// System.out.println("Program Ended") --> If i do this, it prints before
// the threads

if(exit && exit2 && exit3 && exit4) {
System.out.println("Program Ended");
// code here
}

有没有办法确保我只在线程停止后运行一些语句?

最佳答案

Thread 类有一个方法可以为您执行此操作 join将阻塞直到线程执行完毕。 Baeldung教程如何使用Thread#join

所以你的代码应该是这样的:

thread1.start();
thread2.start();
thread3.start();
thread4.start();

thread1.join();
thread2.join();
thread3.join();
thread4.join();

if(exit && exit2 && exit3 && exit4) {
System.out.println("Program Ended");
}

关于java - 为什么我的线程停止工作后无法运行 main() 中的语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54053620/

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