Я понял это статический метод и пока поток работает он true Как сделать isAlive = false;?
class MyThread extends Thread {
public void run() {
while(Thread.currentThread().isAlive()) ;
}
}
Обанин Евгений Геннадьевич
41 уровень
Задачу решил Но не разобрался isAlive()
Решен
Комментарии (17)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Обанин Евгений Геннадьевич
13 ноября 2019, 10:09
Создается без создания объекта Thread. + метод
Не надо new Thread
Как закрыть while не пойму Так не получается
while(Thread.currentThread().isAlive()) {
Thread.currentThread().interrupt();
}
0
IceBergMaster
13 ноября 2019, 10:21полезный
"без объекта Thread" - а currentThread это что?
Как закрыть while? - никак, ты хочешь, чтобы у тебя нить что-то делала, но при этом была мертвой/завершенной?
Это как мёртвому человеку сказать "я мёртвый".
+1
IceBergMaster
13 ноября 2019, 09:55полезный
Пока поток выполняется - живой, закончил - мёртвый.
Но почему ты решил, что это статический метод?
+1
Обанин Евгений Геннадьевич
13 ноября 2019, 10:28
currentThread() это метод класса Thread и к созданию объекта он не относится Если System.out.println(Thread.currentThread()) выводит имя потока и еще что то
0
IceBergMaster
13 ноября 2019, 10:30полезный
"выводит имя потока" - ну так потока, значит метод вызывается у потока?
+1
Обанин Евгений Геннадьевич
13 ноября 2019, 10:31
Я так понимаю в методе currentThread() есть еще методы Например getName() выводит имя , isAlive() определяет работает поток или нет
0
Обанин Евгений Геннадьевич
13 ноября 2019, 10:32
Ну да у потока
0
IceBergMaster
13 ноября 2019, 10:32полезный
Такие же методы, как и у объекта Thread, потому что это и есть объект Thread.
Если бы это была статика, то как бы она работала, останавливала все потоки?
+1
Обанин Евгений Геннадьевич
13 ноября 2019, 10:37
Не знаю Я знаю что объект должен создаваться Thread t = new Thread();
Если я могу вызвать метод класса без создания объекта значит это статика
0
Обанин Евгений Геннадьевич
13 ноября 2019, 10:39
Thread.currentThread()
Thread класс
currentThread() метод
0
IceBergMaster
13 ноября 2019, 10:42полезный
Что возвращает метод?
А как без создания new Thread() метод run() вообще начнёт выполнятся?
Вот примерЗдесь создаётся объект? - нет, метод first() вызывается без создания объекта? Он статический?
+1
Обанин Евгений Геннадьевич
13 ноября 2019, 10:48
А понял Похоже у меня работает этот метод, потому что поток main создан и он из за него работает Да? И он не статический все таки
0
IceBergMaster
13 ноября 2019, 10:53решение
Нестатический, тебя же от документации отделяет один клик мыши.
+2
Обанин Евгений Геннадьевич
13 ноября 2019, 11:01
Спасибо большое и еще маленький вопрос
isAlive() только можно проверить работает поток или нет А в while его получается нет смысла применять Раз закрыть ни как не получится ?
0
Обанин Евгений Геннадьевич
13 ноября 2019, 11:03
Будет просто бесконечный цикл
0
IceBergMaster
13 ноября 2019, 11:14полезный
Из одного потока, проверять в while жив ли другой поток - вполне практично.
Но проверять в самом потоке, жив ли он сам - нету смысла.
Конечно он жив, если занимается процессом проверки.
+1
Обанин Евгений Геннадьевич
13 ноября 2019, 11:21
Другой поток можно проверить точно Все понятно Все супер спасибо
0