Да, поток может прервать сам себя в Java, и это допускается.
Для того чтобы прервать текущий поток, его можно прервать с помощью метода interrupt(), который является нестатическим методом класса Thread. Когда текущий поток вызывает метод interrupt() на самом себе, флаг прерывания этого потока устанавливается, и при следующей возможности поток будет прерван.
Например, следующий код прерывает текущий поток и выполняет какие-то действия при этом:
Thread.currentThread().interrupt();
if (Thread.interrupted()) {
// выполнение действия при прерывании потока }
Однако, стоит отметить, что в некоторых случаях прерывание потока изнутри самого потока может привести к нежелательным последствиям или ошибкам в работе программы. Поэтому использование метода interrupt() для прерывания самого себя следует осуществлять осторожно и только тогда, когда это необходимо.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov