java - Java:我们是否应该尽快退出 try-with-resource 块以释放资源?
问题描述
下面哪个代码片段更好?在处理资源方面更好。
try (Jedis jedis = jedisPool.getResource()) {
String value = jedis.get("key");
// Validation calls using `value` but not using `jedis`
// Another DB call using `value` but not using `jedis`
}
或者
String value;
try (Jedis jedis = jedisPool.getResource()) {
value = jedis.get("key");
}
// Validation calls using `value` but not using `jedis`
// Another DB call using `value` but not using `jedis`
在第一个代码片段中,资源被保留,直到其他不相关的操作完成,而在第二个代码片段中,它在使用后立即释放?
解决方案
通常最好尽快释放资源。特别是如果下一个操作是长操作,例如访问数据库。这样,资源就会被释放,并且可以被程序的其他部分免费使用。
只有在创建成本高昂(例如数据库连接)并且有可能再次需要它的情况下,我才会考虑保留该资源。但是,您似乎正在使用资源池,因此资源创建成本将很少。在典型情况下,唯一的成本是池中的一些锁定,这在正确编写(和大小)的池中并不是那么昂贵。
推荐阅读
- css - 我可以制作动画以更改为 innerHTML 吗?
- java - 为什么 SimpleDateFormat 总是忽略连接的时区?
- javascript - 在 div 外部取消单击时的操作
- java - Log4j2 如何覆盖配置 log4j2.xml 中的路径?
- c++ - 调用类的单个公共函数而不使用其名称
- bash - df 到 csv,粘贴 -d 用于多行变量,shell 不是 bash *nix
- sql - 从 SQL Server 调用 HANA 存储过程
- angular - 样式化自定义面板菜单标签
- python - 如何在 python 中解析来自 Lambda 的 SNS 测试通知?
- c# - 将 Datagridview 行数据传递给新表单