我希望有一个while循环,在每个循环上启动一个线程,
我使用以下命令启动线程,我是否需要为每个线程都有一个唯一的标识符,或者因为它从不同的循环启动它会启动正常,还是会覆盖之前的启动,因为它们使用相同的标识符
while(x<y){
Runnable r = new Rule1("neil", 2, 0);
new Thread(r).start();
x++;
}
答案 0 :(得分:6)
它会正常工作。
您的主题根本没有任何标识符。
r
变量是普通(和临时)变量;您将其值传递给Thread
构造函数。
运行时甚至不知道变量。
答案 1 :(得分:4)
它将启动多个线程。线程的唯一“唯一标识符”是Thread.getId()
返回的ID,您无法分配该ID。甚至线程名称也不需要是唯一的。换句话说,这里没有可以重复使用的唯一标识符。
当然,你在每次迭代中为同一个变量分配Thread
引用这一事实并不意味着线程会一丝不苟。
答案 2 :(得分:0)
虽然您不需要为每个线程创建唯一标识符(框架会处理它),但最好的做法是尽可能根据他们正在做的事情命名您的线程,以便在开始调试时logs / jvisualvm你知道线程的目的。