有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

redis Java:我们应该尽快退出trywithresource块来释放资源吗?

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

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`

在第一个代码段中,资源被搁置,直到其他不相关的操作完成,而在第二个代码段中,资源一经使用就被释放


共 (1) 个答案

  1. # 1 楼答案

    通常最好尽快释放资源。尤其是如果下一个操作很长,比如访问数据库。这样,资源就会被释放,并且可以被程序的其他部分自由使用

    我认为只有在创建一个昂贵的资源(例如数据库连接)的情况下,才能保持资源,并且有可能再次需要它。然而,您似乎正在使用一个资源池,因此资源创建成本将很低。在一个典型的情况下,唯一的代价是池内的一些锁定,而在一个正确编写(和大小)的池中,这并不昂贵