Como garantir que uma parte do código seja executada antes de sair de um aplicativo java

Estou usando uma API licenciada que possui um método para adquirir / liberar um objeto de licença de um servidor de licenças que tenha um número finito de licenças. No início do meu aplicativo, eu chamo o método para adquirir a licença, mas quero ter certeza de que isso seja liberado mesmo que meu programa termine / falhe abruptamente (exceções, SIGTERM, etc). O desligamento é a melhor maneira de abordar esse problema?

questionAnswers(4)

yourAnswerToTheQuestion