【发布时间】:2015-01-20 17:42:09
【问题描述】:
我正在尝试了解 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 的任何线程局部变量,那么在第二次迭代中它们的值将被覆盖。
这听起来可能是个愚蠢的问题,但请帮帮我。
【问题讨论】:
标签: java multithreading