UCP工作算法[重复]

Posted

技术标签:

【中文标题】UCP工作算法[重复]【英文标题】:UCP algorithm of work [duplicate] 【发布时间】:2018-08-03 16:21:24 【问题描述】:

我使用 Oracle 的通用连接池。我在这个计划上工作

class Action 
  static PoolDataSource initPool() 
    PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();
    pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
    pds.setURL(".........");
    pds.setUser("user");
    pds.setPassword("pass");
    pds.setInitialPoolSize(0);
    return pds;
  

  static final PoolDataSource pds = initPool();

  void doAction() 
    Connection connection = pds.getConnection();
    ..........
    connection.close();  // ????
  

您是否需要在doAction 完成后调用connection.close(),或者使用池的整个感觉是否会丢失并且那里的连接应该保持打开状态直到它们自己超时关闭?

【问题讨论】:

是的,关闭会将其返回到连接池。否则会泄漏连接并耗尽连接池。 @KrisRice 谢谢。你会写评论作为答案吗? 当然我会把它作为一个实际的答案。 【参考方案1】:

TL;博士。是的,关闭它们。它实际上并没有关闭,它返回到连接池以进行下一次 getConnection() 调用。

完整的文档在这里: https://docs.oracle.com/cd/E11882_01/java.112/e12265/connect.htm#CHDJCGGB

应归还不再使用的借用连接 到池中,以便它们可用于下一个连接 要求。 close 方法用于关闭连接和 自动将连接返回到池中。关闭方法 不会从池中物理删除连接。

未关闭的借用连接将保持借用状态; 对连接的后续请求会导致新连接 如果没有可用的连接,则创建。这种行为会导致很多 要创建的连接可能会影响系统性能。

【讨论】:

以上是关于UCP工作算法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

工作相关资料

理解神秘工作的递归二进制搜索算法[重复]

HashMap.get 方法如何工作[重复]

计算机操作系统 - 调度算法

oracle.ucp.jdbc.PoolDataSource.getConnection() 多线程安全吗?

Oracle UCP 和 NullPointerException