首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与HikariCP并发

与HikariCP并发
EN

Stack Overflow用户
提问于 2018-11-20 07:34:56
回答 1查看 3.8K关注 0票数 4

我有一个java程序来更新oracle数据库中的表。

我尝试过使用单个JDBC连接,它非常慢,需要几个小时才能完成。

我试图使用HikariCP来创建一个连接池,并让多个线程从池中获得独立的连接。

假设池中有6个线程和5个数据库连接,其中5个线程调用HikariDataSource.getConnection()方法。他们每个人都会得到一个独立的db连接对象吗?

如果是,那么,当线程调用getConnection方法或使用空连接执行剩余代码时,线程会处于阻塞/等待状态吗?

如果不是,我怎样才能让他们分开联系?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-20 07:46:28

他们每个人都会得到一个独立的db连接对象吗?

每个线程询问连接(如果可用的话)将获得一个单独的db连接对象。

如果是,那么,当线程调用getConnection方法或使用空连接执行剩余代码时,线程会处于阻塞/等待状态吗?

如果没有可用的连接,它将等到连接被释放到池并接受它,如果它在超时定义后才会得到连接,它将抛出一个超时异常。

如果不是,我怎样才能让他们分开联系?

不相关,因为每个线程将得到不同的连接。

关于HikariCP与并发

HikariCP包含一个名为ConcurrentBag的自定义无锁集合.这个想法是从C# .NET ConcurrentBag类中借用来的,但内部实现却完全不同。ConcurrentBag提供..。

  • 无锁设计
  • ThreadLocal缓存
  • 偷盗队列
  • 直接切换优化

...resulting具有高度并发性、极低的延迟性和尽可能减少错误共享的发生.

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53388228

复制
相关文章

相似问题

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