以下哪个代码段更好?在处理资源方面更好。
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`
在第一个代码片段中,资源一直保持到其他不相关的操作完成,而在第二个代码片段中,它会在使用后立即释放?
通常最好尽快释放资源。特别是如果下一个操作是长的操作,例如访问数据库。这样,资源就会被释放,并且程序的其他部分可以自由使用。
我只考虑创建一些昂贵的东西(例如数据库连接)并且有可能再次需要它时,我会考虑保留资源。但是,您似乎正在使用资源池,因此资源创建成本很少。在典型情况下,唯一的成本是池内的某些锁定,这在正确编写(和大小)的池中并不昂贵。