栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

HikariCP包装器(线程安全)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HikariCP包装器(线程安全)

HikariCP本身是线程安全的。据我了解,您正在尝试做的是阻止调用者通过方法初始化

getConnection()
之前的。大概您还想防止多次调用数据源。
HikariDataSource``init()``init()

getConnection()
通常,对于池吞吐量而言,使用同步包装是一个坏主意。根据上面的代码,我建议使用以下模式:

public class ConnectionProviderHikariCP implements IConnectionProvider {  private static final ConnectionProviderHikariCP INSTANCE;  private final HikariDataSource hikariDataSource;  private AtomicBoolean initialized;  //class initializer:  static  {     INSTANCE = new ConnectionProviderHikariCP();  }  private ConnectionProviderHikariCP() {     hikariDataSource = new HikariDataSource();     initialized = new AtomicInteger();  }  public static ConnectionProviderHikariCP getInstance() {     return INSTANCE;  }  @Override  public void init(String jdbcUrl, String user, String password) {     if (initialized.compareAndSet(false, true)) {        hikariDataSource.setJdbcUrl(jdbcUrl);     hikariDataSource.setUsername(user);        hikariDataSource.setPassword(password);     }     else {        throw new IllegalStateException("Connection provider already initialized.");     }  }  @Override  public Connection getConnection() throws SQLException {     if (initialized.get()) {        return hikariDataSource.getConnection();     }     throw new UnsupportedOperationException("Debe inicializar mediante el método Init() primero!!!!!.");   }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号