我有这个带有连接池的单例。
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/