une*_*q95 4 java concurrency multithreading jdbc hikaricp
我有一个java程序,它更新oracle数据库中的表。
我已经尝试使用单个 JDBC 连接,但速度非常慢,需要几个小时才能完成。
我正在尝试使用 HikariCP 来创建连接池,并让多个线程从池中获取单独的连接。
假设池中有 6 个线程和 5 个数据库连接,其中 5 个线程调用该HikariDataSource.getConnection()方法。他们每个人都会得到一个单独的数据库连接对象吗?
如果是,那么当线程调用 getConnection 方法或使用空连接执行剩余代码时,该线程是否会处于阻塞/等待状态?
如果不是,我如何让它们分开连接?
他们每个人都会得到一个单独的数据库连接对象吗?
每个线程询问连接,如果可用,则获取一个单独的数据库连接对象
如果是,那么当线程调用 getConnection 方法或使用空连接执行剩余代码时,该线程是否会处于阻塞/等待状态?
如果没有可用的连接,它将等待连接被释放到池中并获取它,如果直到定义超时才获得连接,它将抛出超时异常
如果不是,我如何让它们分开连接?
无关紧要,因为每个线程都会获得不同的连接
关于HikariCP 和并发:
HikariCP 包含一个称为 ConcurrentBag 的自定义无锁集合。这个想法是从 C# .NET ConcurrentBag 类借用的,但内部实现完全不同。ConcurrentBag 提供...
- 无锁设计
- 线程本地缓存
- 队列窃取
- 直接切换优化
...从而实现高度并发、极低延迟并最大程度地减少错误共享的发生。
| 归档时间: |
|
| 查看次数: |
4638 次 |
| 最近记录: |