有一个java小问题

主线程和其他线程不是交替运行的吗,那join(还有什么插队的概念呢。)
比如这个

img

首先,加了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);
        }
    }
}

结果是:

img