主线程和其他线程不是交替运行的吗,那join(还有什么插队的概念呢。)
比如这个
首先,加了join运行结果是
main1到main199
线程vip来了1到线程vip来了1000
main200到main500
这不就是有序的吗?只是中间插了东西
其次,如果把join删掉运行结果应该是
main线程和“线程vip来了”线程是交替执行的吧
因此,是不是join其实是把线程执行顺序改了呢。
我的问题是:我认为主线程至少在1-200的时候和其他线程交替运行,但是运行结果显示1-200只有主线程在运行。
可以多试几次,我的是交替的。 或者可以加一些延时。例如
public class TestJoin implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("vip " + i);
}
}
public static void main(String[] args) throws InterruptedException {
TestJoin t1 = new TestJoin();
Thread thread = new Thread(t1);
thread.start();
for (int i = 0; i < 5; i++) {
if(i == 2){
thread.join();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("main "+ i);
}
}
}
结果是: