练习打卡,疑问

来源:2-8 自由编程

qq_慕后端6458515

2020-09-06 21:47:00

疑问:主程序的循环里如果有i++,会出现只输出两个Main Thread ,这是因为两个Implements的原因嘛??

class Dog implements Runnable{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        int i=1;
        while(i<=3) {
            System.out.println(Thread.currentThread().getName()+"A dog");
            i++;
        }
    }
    
}
class Cat implements Runnable{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        int i=1;
        while(i<=3) {
            System.out.println(Thread.currentThread().getName()+"A Cat");
            i++;
        }
    }
    
}
public class homeWorkTest {
    public static void main(String[] args) {
        for(int i=1;i<=3;i++) {
            System.out.println("main thread");
            //i++;
        }
    
        Dog dog=new Dog();
        Thread t1=new Thread(dog);
        t1.start();
        Cat cat=new Cat();
        Thread t2=new Thread(cat);
        t2.start();
    }
}

写回答

1回答

好帮手慕阿慧

2020-09-07

同学你好,

1、同学已完成练习,棒棒哒!

2、只输出两个Main Thread,不是两个Implements的原因。

以下图中序号为例,for循环的执行顺序为:1243 43 43..

http://img.mukewang.com/climg/5f55a36b099902c805370202.jpg

在for循环语句中执行完语句中i++后,会再执行表达式3中i++。所以当最初i=1时,执行完4,3序号后,i就变成了3。由于3<=3,所以会执行循环中语句i++,会再执行表达式3执行i++,这时i为5,由于5<=3条件不成立,所以for循环结束。最终会打印2次,其中i的为1,3,如下:

http://img.mukewang.com/climg/5f55a3dc0922906204590421.jpg

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

0

0 学习 · 16556 问题

查看课程