在以下情况下,我无法理解 join 的含义:
Thread t1=new MyThread(1);
Thread t2=new MyThread(2);
t1.start();
t2.start();
t1.join();
t2.join();
问题是: 据我了解 start 调用线程的 run 方法。 所以主线程首先会遍历开始,因此所有线程都被初始化。 然后主线程转到t1.join,这意味着主线程将等到t1结束运行,然后才继续执行t2.join()。 我不明白的是 t1,t2 同时已经启动,所以它们位于 run 方法内。 因此结果应该是出乎意料的。我对吗? 那么为什么它会按顺序出现: 我有以下运行方法:
void run(){
for(int i=0; i<4; i++){
System.out.println(j);
}
}
当j是MyThread构造函数中的标识符时; 输出是:
2 2 2 2 1 1 1 1
或者 1 1 1 1 2 2 2 2
最佳答案
尝试通过将迭代限制增加到 1000 来运行相同的程序:i
;然后比较结果。结果出乎意料,你的理解是正确的。
关于java连接方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8064714/