gpt4 book ai didi

java - 关于 Java 中线程的说明

转载 作者:行者123 更新时间:2023-11-29 06:59:45 27 4
gpt4 key购买 nike

我正在尝试了解 Java 中的一些基本内容,需要有关线程的帮助。

今天看到一段代码,在for循环中创建了新的线程,如下:

public class TestThreads {
public static void main(String args[])
{
Thread t1=new Thread();
System.out.println("***************"+t1.getId());
for(int i=0;i<5;i++)
{
Thread t2= new Thread();
System.out.println("++++++++++++++++"+t2.getId());
System.out.println("++++++++++++++++"+t2.getName());
}
}

}

我假设 t2.getId() 和 t2.getName() 将打印相同的值,因为在循环的每次迭代中,新线程都被分配给同一个对象线程对象 T2。

然而,对于每次迭代,都会打印不同的 getId 和 getName 值。

谁能解释一下这是怎么可能的,我们不是将新线程分配给同一个对象吗。

在这种情况下,如果在第一次迭代中创建了 T2 的任何线程局部变量,则在第二次迭代中将覆盖它们的值。

这听起来可能是个愚蠢的问题,但请帮帮我。

最佳答案

您将对象引用变量 混淆了。

I was assuming that t2.getId() and t2.getName() will print the same values since in every iteration of the loop,the new thread is being assigned to same object thread object T2.

不,一个新线程对象 正在分配给相同的引用变量,t2。

这里的变量 t2 指的是分配给它的任何对象,变量名在此上下文中没有意义,而是对象引用是真正事项。由于您在 for 循环中更改了引用,对象的“名称”(如果它有一个 name 字段)将同样更改。

我觉得充分理解这一关键区别,真正触及 Java OOPS 编程的核心,是那些一旦实现将对程序员有很大帮助的主要步骤之一。

关于java - 关于 Java 中线程的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28051804/

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