java - 我应该同步 DataSource 的 getConnection() 吗

标签 java sql jdbc connection-pooling

我有这个带有连接池的单例。

public enum ConnectionPool {
    INSTANCE;

    private DataSource ds = null;

    ConnectionPool() {
      try {
         final Context initCtx = new InitialContext();
         ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/test");
      } catch (NamingException e) {
         e.printStackTrace();
      }
    }

   public Connection getConnection() throws SQLException {
      return ds.getConnection();
   }
}

我是否应该同步 getConnection() 以防止从不同的线程获取相同的实例?看起来它已经被 Tomcat 同步了,但我不确定(我使用的是 Tomcat 8)。

最佳答案

虽然在 java 文档中没有明确提到,DataSource#getConnection 方法被设计为在单个 DataSource 实例上同时调用。

一般情况下您不需要提供客户端级同步。

Java 文档中的限制可能被省略以提供实现的灵 active 。

关于java - 我应该同步 DataSource 的 getConnection() 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35856002/

相关文章:

mongodb - 如何配置 jndi Glassfish 4 连接到 mongoDB 数据库

java - IE 在 GWT 中错误地显示一些小部件

java - 使用 ParseRecyclerQueryAdapter

mysql - SQL(Mysql)中的树状数据整理

java - 一对多 Spring 结果映射

java - 将 ResultSet 中的特定记录分配给变量

java - Clojure程序的执行时间

java - object != null 验证

mysql - 如何获取从中找到行的表的名称

sql - 上个月获取日期