一尘不染

Apache Commons Pool 2中的maxTotal和maxIdle有什么区别?

java

我正在使用Apache Commons Pool 2实现为我的应用程序提供对象池机制。

截至目前,我已设置的默认值maxTotal(),并maxIdle()10在我的代码。

但是我不明白它们之间有什么区别?如果我将设置maxIdle()为非常小的值(假设为0)或非常大的值(等于maxTotal())怎么办?

注意:Apache类在内部建议将上述两个配置的默认值都设置为8。


阅读 938

收藏
2020-12-03

共1个答案

一尘不染

连接池是一种用于与数量不受限制的同时用户共享有限数量的数据库连接的技术。最大总连接数(maxTotal)包括活动和空闲连接,即正在使用的连接和当前未使用的连接(这是所有连接的总和)。最大空闲连接数(maxIdle)是准备使用的连接(但当前未使用)。如果将设置maxTotal为100,则一次最多可以打开100个数据库连接;如果将maxIdle设置为10,则如果没有使用任何连接,则最多可以释放90个连接。该池将
根据需要 重新连接。

在池中,空闲连接已准备就绪,并且如果连接当前处于空闲状态(池返回空闲连接),则对连接的请求将不会阻塞。如果没有空闲的连接,则池将阻止打开连接,或者直到连接返回到池中为止。

在您的问题中,如果同时最多使用10个,则将打开十个连接,并且该池将不会缩小或增长。

2020-12-03