@Override
public String toString () {
return getName() + " from " + Thread.currentThread().getName() + " created";
}
почему getName() выдает имя новой нити, а Thread.currentThread().getName() предыдущей (с которой создавалась)?Рома
40 уровень
разница между Thread.currentThread().getName() и getName()
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Рома
23 ноября 2017, 13:33
спасибо))
0
Рома
21 ноября 2017, 13:03
0
Артём Кожевников
21 ноября 2017, 15:44
0
Pavlo PlynkoJava-разработчик в CodeGymExpert
22 ноября 2017, 09:50
Thread.currentThread().getName() выполняется в потоке main, вот такая цепочка вызова:
main -> println -> valueOf -> toString
getName() в твоем случае выполняется тоже в потоке main, его вызов эквивалентен this.getName(). И this в данном случае это новосозданный объект GenerateThread.
Для того чтобы получить другой вывод, вызов println надо перенести в метод run():
System.out.println(this);
+2
--------Master
21 ноября 2017, 13:00
Я так понимаю:
getName() - имя потока как объекта класса Thread (поток может быть в любом состоянии), Thread.currentThread().getName() - имя конкретно работающего "прямо сейчас" потока, в процессе работы которого и вызывается метод
+15
Артём Кожевников
21 ноября 2017, 12:58
Выдает имя текущей нити.
P.s. чтобы дать четкий ответ на ваш вопрос - предоставьте полный исходный код
0