JAVA中多线程结果没有随机

问题遇到的现象和发生背景

当自定义类继续Thread重写run方法是,里面使用getName得到的结果就不是随机的

问题相关代码,请勿粘贴截图

public class MyThread extends Thread {
    public MyThread(String name) {
        super(name);
    }
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println(getName()+":正在执行!"+i);
        }
    }
}
public class Demo01 {
    public static void main(String[] args) {
        System.out.println("这里是main线程");
        MyThread mt = new MyThread("小强");
        mt.start();
        for (int i = 0; i < 20; i++) {
            System.out.println("旺财"+i);
        }
    }
}
运行结果及报错内容

这里是main线程
旺财0
旺财1
旺财2
旺财3
旺财4
旺财5
旺财6
旺财7
旺财8
旺财9
旺财10
旺财11
旺财12
旺财13
旺财14
旺财15
旺财16
旺财17
旺财18
旺财19
小强:正在执行!0
小强:正在执行!1
小强:正在执行!2
小强:正在执行!3
小强:正在执行!4
小强:正在执行!5
小强:正在执行!6
小强:正在执行!7
小强:正在执行!8
小强:正在执行!9
小强:正在执行!10
小强:正在执行!11
小强:正在执行!12
小强:正在执行!13
小强:正在执行!14
小强:正在执行!15
小强:正在执行!16
小强:正在执行!17
小强:正在执行!18
小强:正在执行!19

我的解答思路和尝试过的方法

我试过去掉getname得到的结果就随机

我想要达到的结果

那么是什么原因造成这种结果



多运行几次试试,或者循环次数增大一些。
测试效果是可以交替输出的。这个跟电脑cpu性能有关系。

img