首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JedisPool中尝试使用链式资源

在JedisPool中尝试使用链式资源
EN

Stack Overflow用户
提问于 2017-07-18 12:21:43
回答 1查看 885关注 0票数 1

我很困惑:一个用法:try(Pipeline pipeline = jedisPool.getResource().pipelined())会关闭管道和jedis实例吗?还是直接关闭管道?

我将此用于多线程,并得到了如下错误。我感到困惑的是,这个错误是由于JedisPool中的实例不足(由于使用了资源的尝试),还是因为死锁(因为JedisPool在多线程中做得不好)?

代码语言:javascript
运行
复制
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:583)
org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:442)
org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
redis.clients.util.Pool.getResource(Pool.java:49)
redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
io.codis.jodis.RoundRobinJedisPool.getResource(RoundRobinJedisPool.java:214)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-18 12:27:58

只关闭变量,在您的例子中是Pipeline pipeline。您可以在docs https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html中阅读更多内容。

您可以使用示例来检查它:

MyResource类:

代码语言:javascript
运行
复制
class MyResource implements AutoCloseable {

    public SubResource getSubResource() {
        return new SubResource();
    }

    @Override
    public void close() throws Exception {
        System.out.println("Resource closed");
    }
}

SubResource类:

代码语言:javascript
运行
复制
class SubResource implements AutoCloseable{
    @Override
    public void close() throws Exception {
        System.out.println("SubResource closed");
    }
}

Main类:

代码语言:javascript
运行
复制
class Main {

    public static void main(String[] args) {
        try (SubResource s = new MyResource().getSubResource()) {
            System.out.println("Before closing");
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println("After closing");
    }
}

执行结果:

代码语言:javascript
运行
复制
Before closing
SubResource closed
After closing
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45166674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档