Как сказал Божо, Thread.interrupt () - это общий и правильный способ сделать это.Но помните, что для взаимодействия требуется нить;Очень легко реализовать поток, который игнорирует запросы прерывания.
Для того, чтобы кусок кода был таким образом прерываемым, он не должен игнорировать любое InterruptedException, и он должен проверять флаг прерывания на каждой итерации цикла (используя Thread.currentThread (). IsInterrupted ()),Кроме того, он не должен иметь никаких непрерывных операций блокировки.Если такие операции существуют (например, ожидание в сокете), вам потребуется более конкретная реализация прерывания (например, закрытие сокета).