В Java используется системный метод interrupt() вместо прерывания потока через механизмы операционной системы, потому что он позволяет более корректно завершать работу потока. 13
Метод Thread.stop(), который раньше использовался для прерывания потока, просто останавливал его без какой-либо дополнительной работы. 1 Например, поток мог работать с данными и что-то в них менять, а потом его резко останавливали посреди работы — и всё, ни корректного завершения работы, ни освобождения ресурсов, ни обработки ошибок. 1
Метод interrupt() устанавливает у потока статус, что он прерван. 5 Если объект в этот момент находился в состоянии ожидания, например, join или sleep, ожидание будет прервано, и программа выбросит InterruptedException. 1 Если же поток в этот момент был в работоспособном состоянии, у объекта будет установлен boolean-флаг interrupted. 1 Проверить объект на значение этого флага и корректно завершить работу должен программист. 1