1
下面是创建线程,数组的代码启动它们,然后调用加入他们:Java线程加入for循环,未知行为输出
public class JoinExample {
private static class CodeForThread implements Runnable {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " " + i);
}
}
}
public static void main(String[] args) throws InterruptedException {
Thread[] threads = new Thread[100];
for (int i = 0; i < 100; i++){
threads[i] = new Thread(new CodeForThread());
threads[i].start();
}
for (int i = 0; i < threads.length; i++) {
threads[i].join();
}
System.out.println("All Done");
}
}
我知道,加入等待线程在继续之前死亡,并且线程可能不按顺序调用,但仍将完成其任务。问题是我的输出中有这么多异常。有人可以解释为什么这样的事情可能会发生:
Thread-60 0
Thread-60 1
Thread-60 2
Thread-60 3
Thread-60 4
Thread-97 0 //***
Thread-59 0
Thread-59 1
Thread-59 2
Thread-59 3
Thread-59 4
这是因为那是在进入连接循环之前计划开始的线程之一吗?
线程97输出的其余部分应该在下面的某处。不是吗? – GurV