Относительно прерывания () ->
Это зависит от того, как вы собираетесь обрабатывать прерывания в потоке ввода-вывода.Несмотря на свое имя, interrupt () делает только передачу сообщения о прерывании в указанный поток.Это не означает прекращение работы как можно быстрее.Получающий поток увидит это сообщение и вызовет InterruptedException.Как он будет реагировать на ситуацию, находится в его полном распоряжении.Он может проигнорировать это, перезапустить себя, выключить, что угодно.
Прерывания, как правило, используются, когда вам нужно сообщить другому потоку, что что-то фундаментальное изменилось и что текущий контекст выполнения может больше не быть допустимым, желательным или возможным, или чем угодно.