Никогда не следует использовать finalize()
по причинам, слишком широким для обсуждения здесь.
Если несколько потоков могут работать с одним объектом одновременно, то вы можете использовать «подсчет ссылок», чтобы отслеживать, когда ресурсдолжен быть закрыт.
Каждый поток / функция / и т. Д., Который в настоящее время работает с объектом, увеличивает свой «счетчик пользователей» на единицу, когда он получает доступ к объекту.Когда он перестает работать с ним, он уменьшает число своих пользователей на единицу.Поток, который уменьшил счет до нуля, закрывает объект.Вы можете использовать различные «атомарные» примитивы, предоставляемые стандартной библиотекой java, для создания решения без блокировки.
Поскольку это объект из третьей библиотеки pary, вам нужно будет создать некоторыесвоего рода обертка для отслеживания ссылок.
PS: Обычно не рекомендуется использовать объекты с общим состоянием между потоками - это напрашивается на проблемы - проблемы синхронизации, скачки данных, потеря производительности при синхронизации и т. д.