从while循环中启动线程,会发生什么?

时间:2010-10-21 15:08:29

标签: java multithreading while-loop

我希望有一个while循环,在每个循环上启动一个线程,

我使用以下命令启动线程,我是否需要为每个线程都有一个唯一的标识符,或者因为它从不同的循环启动它会启动正常,还是会覆盖之前的启动,因为它们使用相同的标识符

while(x<y){
Runnable r = new Rule1("neil", 2, 0);
new Thread(r).start();
x++;
}

3 个答案:

答案 0 :(得分:6)

它会正常工作。

您的主题根本没有任何标识符。
r变量是普通(和临时)变量;您将其值传递给Thread构造函数。

运行时甚至不知道变量。

答案 1 :(得分:4)

它将启动多个线程。线程的唯一“唯一标识符”是Thread.getId()返回的ID,您无法分配该ID。甚至线程名称也不需要是唯一的。换句话说,这里没有可以重复使用的唯一标识符。

当然,你在每次迭代中为同一个变量分配Thread引用这一事实并不意味着线程会一丝不苟。

答案 2 :(得分:0)

虽然您不需要为每个线程创建唯一标识符(框架会处理它),但最好的做法是尽可能根据他们正在做的事情命名您的线程,以便在开始调试时logs / jvisualvm你知道线程的目的。