练习打卡,疑问
来源: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..
在for循环语句中执行完语句中i++后,会再执行表达式3中i++。所以当最初i=1时,执行完4,3序号后,i就变成了3。由于3<=3,所以会执行循环中语句i++,会再执行表达式3执行i++,这时i为5,由于5<=3条件不成立,所以for循环结束。最终会打印2次,其中i的为1,3,如下:
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题