在Java中,如果我有一个从构造函数创建线程的类(通过调用该类的某些函数),我在main方法中创建该类的对象。主方法是等待所有线程完成还是继续到下一行?
例如:
public static void main(String[] args) {
WorksWithThreads obj = new WorksWithThreads ( );
//does something else - does this line happen after all the 9 threads finished their job?
}
class WorksWithThreads(){
public WorksWithThreads(){
for(int i=0;i<9;i++)
WithThread tread= new WithThread();
}
private static class WithThread extends Thread {
public WithThread () {
run();
}
public void run(){
//does something
}
}
}
我希望我不会太混乱..提前谢谢你.. 什兰
答案 0 :(得分:3)
如果你实际上产生了新的线程,你的主要方法将在完成产生后立即继续(但在线程结束之前,假设它们运行一段时间)
但是你没有产生线程。您正在创建Thread类的实例。要实际生成新线程,您必须调用start。像你一样调用run()只是一个普通的方法调用,处理只有在完成后才会继续。
答案 1 :(得分:1)
没有。线程的重点是它们不会停止生成它们的线程的执行。 main()
一旦完成所有线程的产生,WorksWithThreads
将继续执行,但它产生的线程将与main
的其余部分同时执行。
答案 2 :(得分:0)
是的,它会在创建9个线程后运行。你甚至没有启动那9个线程。所以在执行它们之前,将执行main中的下一行