m0_46078464 2022-01-10 00:11 采纳率: 66.7%
浏览 27
已结题

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得到的结果就随机

我想要达到的结果

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



  • 写回答

1条回答 默认 最新

  • CSDN专家-sinJack 2022-01-10 01:16
    关注

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

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月18日
  • 已采纳回答 1月10日
  • 创建了问题 1月10日