Вы не должны полагаться на метод finalize()
, закрывающий клиент - вы должны обязательно закрыть его в другом месте. finalize () будет вызываться только тогда, когда объект собирается сборщиком мусора, что может занять много времени после того, как клиент должен был завершиться (и может быть никогда, в зависимости от жизненного цикла программы и параметров gc.)
По этой причине многие просто полностью избавятся от метода finalize ().
Если вы оставите его там, то просто обработайте его как резервную копию, чтобы поймать ошибку кодирования вверх по течению. Сначала проверьте, выключен ли клиент, а если нет, убедитесь, что напечатано предупреждающее сообщение, указывающее, что у вас есть ошибка, которую вам нужно устранить!