В Java нет стандартного способа "остановить" поток извне, как, например, в старых версиях с Thread.stop(), который признан устаревшим из-за небезопасности (мог привести к повреждению данных). Вместо этого используются cooperative-подходы:
Использование флага: В потоке создается boolean флаг, который периодически проверяется. Внешний код меняет значение флага, и поток завершает свою работу.
java
Прерывание (interrupt()): Вызов thread.interrupt() устанавливает флаг прерывания потока. Поток должен сам проверить этот флаг (Thread.currentThread().isInterrupted()) и прекратить работу. Методы, блокирующие выполнение (например, sleep(), wait(), join(), методы I/O), при получении прерывания выбрасывают InterruptedException.
java
Важно понимать, что оба способа требуют от кода, выполняющегося в потоке, активного участия в процессе завершения. Поток должен периодически проверять флаг или статус прерывания и корректно обрабатывать сигналы на остановку.