jvm 为什么可以在循环中使用相同的变量名创建线程对象?

gcuhipw9  于 2022-11-07  发布在  其他
关注(0)|答案(2)|浏览(175)

我知道如果我在主线程的循环中创建了一些变量,它会创建一个,然后在下一次迭代中,它会创建另一个同名的变量,并将继续直到循环完成。没有问题,因为每次迭代中,创建的变量都消失了,所以我们可以创建另一个变量。
但是如果我在循环中创建了同名的线程会怎么样呢?线程不会同时“终止”。那么为什么会这样呢?我觉得我应该把JVM创建变量的工作和操作系统处理线程的工作分开,但是我想听到一个适当的解释。

for (int i = 0; i < 10; i++) {
    MyFirstThread thread = new MyFirstThread();
    thread.start();
}
fgw7neuy

fgw7neuy1#

您只需将对新自定义对象MyFirstThread的引用赋给新变量thread。在循环的每个循环中,变量thread超出范围,您将失去对MyFirstThread和新创建的变量thread的引用。

相关问题