老师,为什么我这里输出的是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 星