gpt4 book ai didi

java - 多线程如何与 Java 中的循环一起工作?

转载 作者:行者123 更新时间:2023-11-30 10:01:03 24 4
gpt4 key购买 nike

<分区>

当我使用 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个值?如果有人对此有所了解,那就太好了。谢谢。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com