Есть ли способ вернуть поток в действие после thread.interrupt()?

Рейтинг: 5Ответов: 1Опубликовано: 06.03.2023

У меня есть код, который при нажатии на кнопку запускает бесконечный цикл в другом потоке, при нажатии на кнопку стоп, вызывается метод thread.interrupt(). При повторном нажатии на запуск, поток больше не запускается потому что isInterrupted() будет равняться true. Есть ли способ вернуть поток в действие?

Ответы

▲ 1Принят

Если в момент прерывания потока он спит, то генерируется InterruptedException, при этом значение флага, который вернет isInterrupted() будет равняться false, то есть он сбросится сам.
Более того, чтобы сбросить значение флага прерывания можно воспользоваться методом interrupted(). Важный момент, что флаг прерывания сбросится у ТЕКУЩЕГО потока, в котором был вызван данный метод.

Подробнее про эти методы можно почитать здесь ну и конечно в документации.

Возможно у вас есть другие ошибки в логике программы, приведите пример того, что вы пытаетесь сделать.