gpt4 book ai didi

java - 如何在生成的线程完成执行时停止主进程

转载 作者:行者123 更新时间:2023-11-29 03:43:26 25 4
gpt4 key购买 nike

这是我的代码

public class Main {

private static class GetData implements Runnable{

private List list;
private SqlQuery query;
GetData(SqlQuery<String> param){
this.query=param;
}

public void run(){


list = query.execute();

}

}


public static void main(String[] args){

ApplicationContext context = new ClassPathXmlApplicationContext("database.xml");
SqlQuery<String> parameter = (SqlQuery<String>) context.getBean("BEAN_NAME");

System.out.println("hello");


new Thread(new Inner(parameter)).start();


for(each element in list of inner class){

System.out.println(element.id);
}

}

}

我的问题是,在我从 xml 文件中获取查询后,它执行了但没有打印任何内容?为什么?

此外,如果我创建另一个线程并运行它以创建另一个列表,我如何确保在我的所有线程都完成执行后,只有到那时我的主程序才会继续执行。

最佳答案

改变

new Thread(new Inner(parameter)).start();

Thread t = new Thread(new Inner(parameter));
t.start();

并将 t.join(); 放在你的 for 循环之后。

编辑: 对于 5 个或任意数量的线程,说 n

像这样创建一个线程数组

Thread[] tArray = new Thread[n];

for (int j = 0; j < tArray .length; j++) {

//your code to start the thread goes here

}

一旦启动了它们,在主函数的末尾再次循环遍历它们以将它们中的每一个连接到主线程。

for (int j = 0; j < tarray .length; j++) {

tArray.join()

}

关于java - 如何在生成的线程完成执行时停止主进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12108457/

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