Как правило, это плохая идея прекратить работу потока извне, потому что вы не знаете состояние, в котором в данный момент находится поток. Возможно, что ему нужно сделать некоторые очистки, и он не сможет сделайте это, когда вы принудительно отключите его. Вот почему все методы Thread, которые делают это, отмечены как устаревшие .
Гораздо лучше использовать один из многих методов, доступных для межпроцессной связи, чтобы сигнализировать о выполнении процедуры самой нитью, что она должна прервать свою работу и выйти нормально. Один из способов сделать это - добавить к вашему runnable метод abort()
, который вызывает флаг, объявленный как volatile
. Внутренний цикл вашего Runnable проверяет этот флаг и выходит (контролируемым образом), когда этот флаг поднят.