主方法中的三遍main thread放在后面运行是随机的吗?我运行出来的是随机的

主方法中的三遍main thread放在后面运行是随机的吗?我运行出来的是随机的

package com.imooc.runnable;

class Cat implements Runnable{
    @Override
    public void run() {
        for(int i=0;i<3;i++) {
            System.out.println(Thread.currentThread().getName()+"A cat");
        }
    }
}

class Dog implements Runnable{
    @Override
    public void run() {
        for(int i=0;i<3;i++) {
            System.out.println(Thread.currentThread().getName()+"A dog");
        }
    }
}

public class FreeTest2 {

    public static void main(String[] args) {
        Cat cat=new Cat();
        Dog dog=new Dog();
        Thread th1=new Thread(cat);
        Thread th2=new Thread(dog);
        th1.start();
        th2.start();
        for(int i=0;i<3;i++) {
            System.out.println("main thread");
        }
    }

}


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,如果将for循环放在第一句,那么会先执行输出main thread,然后后面的两个线程再随机。因为执行主线程时,后面两个线程还没有启动。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快!

好帮手慕阿满 2018-12-28 11:08:38

同学你好,这几个线程都是随机,可能次数太少,随机的不明显,同学可以增加一下循环次数,比如循环20次,多运行几次,就可以看出来他们都是随机的,如:

http://img1.sycdn.imooc.com//climg/5c2593a90001605402900441.jpg

祝:学习愉快~

  • 提问者 CookiePrettyzzz #1
    public class FreeTest2 { public static void main(String[] args) { for(int i=0;i<20;i++) { System.out.println("main thread"); } Cat cat=new Cat(); Dog dog=new Dog(); Thread th1=new Thread(cat); Thread th2=new Thread(dog); th1.start(); th2.start(); } }
    2018-12-28 13:34:16
  • 提问者 CookiePrettyzzz #2
    把for循环放在主方法中的第一句,循环20次也不是随机的,这个是和位置有关系吗?
    2018-12-28 13:36:13
好帮手慕阿满 2018-12-28 09:58:55

同学的代码完成的不错,主线程运行是随机的。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快!

  • 提问者 CookiePrettyzzz #1
    在2-1 通过Thread类创建线程(上)中:主线程1、主线程2也是是随机的吗?还是说只有线程mt是随机的?
    2018-12-28 10:26:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师