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

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日

    悬赏问题

    • ¥15 Qt 不小心删除了自带的类,该怎么办
    • ¥15 我需要在PC端 开两个抖店工作台客户端.(语言-java)
    • ¥15 有没有哪位厉害的人可以用C#可视化呀
    • ¥15 可以帮我看看代码哪里错了吗
    • ¥15 设计一个成绩管理系统
    • ¥15 PCL注册的选点等函数如何取消注册
    • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
    • ¥15 Python爬虫程序
    • ¥15 crypto 这种的应该怎么找flag?
    • ¥15 代码已写好,求帮我指出错误,有偿!