Запуск потоков из цикла while, что происходит? - PullRequest
1 голос
/ 21 октября 2010

Я хочу иметь цикл while, который запускает поток в каждом цикле,

Я использую следующее для запуска потока, нужно ли иметь уникальный идентификатор для каждого потока или потому что он запускается из разных циклов, будет ли он запускаться нормально, или он будет перезаписывать предыдущий запуск, так как они используют тот же идентификатор

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

Ответы [ 3 ]

6 голосов
/ 21 октября 2010

Будет нормально работать.

У ваших тем вообще нет идентификаторов.
Переменная r является нормальной (и временной) переменной; вы передаете его значение конструктору Thread.

Среда выполнения даже не знает о переменной.

4 голосов
/ 21 октября 2010

Будет запущено несколько потоков.Единственный «уникальный идентификатор» для потока - это идентификатор, возвращаемый Thread.getId(), и вы не можете его присвоить.Даже имя потока не должно быть уникальным.Другими словами, здесь нет уникального идентификатора, который используется повторно.

Конечно, тот факт, что вы присваиваете ссылку Thread для одной и той же переменной на каждой итерации, не означает, что потоки будут заботитьсямалейшее.

0 голосов
/ 21 октября 2010

Хотя вам не нужно создавать уникальный идентификатор для каждого потока (фреймворк позаботится об этом), лучше всего, если это вообще возможно, именовать ваши потоки в соответствии с тем, что они делают, чтобы при начале отладки с помощью logs / jvisualvm вы знаете о назначении потоков.

...