当我使用 2 个线程调用同一对象 (new Counter()) 的方法时,while 循环运行的次数超过了循环限制。有人可以用简单的语言解释相同的原因。
主要课程:
public class MainClass {
public static void main(String[] args) {
Counter c1 = new Counter();
MyRunnable r1 = new MyRunnable(c1);
Thread t1 = new Thread(r1, "t1");
Thread t2 = new Thread(r1, "t2");
t1.start();
t2.start();
}
}
可运行:
public class MyRunnable implements Runnable {
Counter counter;
public MyRunnable(Counter counter) {
this.counter = counter;
}
@Override
public void run() {
counter.add();
}
}
柜台类:
public class Counter {
int i = 1;
public void add() {
while (i <= 5) {
System.out.println(i + " " + Thread.currentThread().getName());
i++;
}
}
}
输出 :
1 t1
1 t2
2 t1
3 t2
4 t1
5 t2
我想知道,如果限制是 5,那为什么输出 6 个值。有时它也输出5个值?如果有人对此有所了解,那就太好了。谢谢。
浮云间
慕标5832272
BIG阳
当年话下
相关分类