老师,为什么我这里输出的是11个?debug的时候输出的是10个?
package com.imooc.test;
class MyThread implements Runnable{
int i = 0;
@Override
public void run() {
// TODO Auto-generated method stub
while(i<10) {
System.out.println(Thread.currentThread().getName()+"正在运行"+(i+1)+"次!");
i++;
}
}
}
public class ThreadTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyThread mt = new MyThread();
Thread t1 = new Thread(mt);
t1.start();
Thread t2 = new Thread(mt);
t2.start();
}
}
0
收起
正在回答
2回答
同学写成课件中的样子也是输出10次。

如果把输出语句和i++分开写,就有可能在i++执行前,两个线程都执行到了输出语句。
例如第一个线程,刚执行到输出语句还没来得及执行i++。
另一个线程也执行到了输出语句,那么第二个线程打印的时候i还在之前的值。则就会多打印一次了。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星