以下哪个代码片段更好?在处理资源方面更好。

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`

在第一个代码段中,资源被保留,直到完成其他无关的操作,而在第二个代码段中,该资源一被使用就被释放?

最佳答案

通常最好尽快释放资源。特别是如果下一个操作很长,例如访问数据库。这样,资源将被释放,程序的其他部分可以免费使用。

我会考虑仅在资源创建成本高(例如数据库连接)并且有可能再次需要它时才保留资源。但是,似乎您正在使用资源池,因此资源创建成本很少。在典型情况下,唯一的代价就是在池中进行一些锁定,而在正确编写(并确定大小)的池中并没有那么昂贵。

关于java - Java:我们是否应该尽快从try-with-resource块退出以释放资源?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51515492/

10-13 07:54