Я понимаю, что использовать финализаторы плохо даже для закрытия соединения (Является ли закрытие соединения лучшей практикой финализации?), поскольку их вызов не гарантируется. Но что, если ваши соединения объединены в пул соединений? В моем случае я использую пул Apache Commons (http://commons.apache.org/proper/commons-pool/) для объединения соединений SFTP. Я не могу использовать метод попытки с ресурсами, потому что каждое соединение не должно закрываться в конце каждой попытки (чтобы оно потенциально могло быть повторно использовано пулом для следующего действия).
Я предоставляю метод closePool(), который вызывает pool.close(), чтобы любой программист, использующий мой код, мог вызвать его, но что, если он/она забудет это сделать? Является ли вызов этого метода из финализатора лучшим решением, чтобы попытаться закрыть пул соединений, если это не делается вручную, или есть лучший способ? Будет ли хук выключения работать лучше для этого?