Ответ
При отмене потока (Thread.interrupt()) ресурсы не освобождаются автоматически. Ответственность за корректное освобождение лежит на разработчике.
Рекомендуется:
- Обрабатывать
InterruptedExceptionи освобождать ресурсы вfinallyблоке - Проверять
Thread.isInterrupted()в длительных операциях
Пример:
val thread = Thread {
try {
val resource = acquireResource()
try {
while (!Thread.interrupted()) {
// работа с ресурсом
}
} finally {
resource.release()
}
} catch (e: InterruptedException) {
Thread.currentThread().interrupt()
}
}
thread.start()
// ...
thread.interrupt()