如何强制发布资源?

时间:2016-06-23 12:40:55

标签: java autocloseable

我有一个名为Parameter的类,它包含不同的值,包括java.sql.Clob

使用JDBC4规范,我们可以调用free()方法来释放分配给Clob对象的资源。我正在考虑将Parameter类设为AutoClosable并在free()内调用close()方法

这很好,但我也想要强制执行或至少暗示其他人ParameterAutoClosable的实例

除了文档之外还有办法实现这个目标吗?基本上我正在寻找在这种情况下可以做的额外事情。

1 个答案:

答案 0 :(得分:1)

通常的方法是使用可配置的超时实现ObjectPool。从ObjectPool获取对象时开始计数,并检查它是否在超时结束时返回到池中。如果未将Object返回到池中,则抛出异常或强制释放Object保留的资源。这样,您将强制程序员调用close()方法或检测泄漏。

大多数数据库连接池库都具有此功能。查看JDBCConnectionPool - InactiveConnectionTimeoutSecondsApache Commons Pool - AbandonedConfig