gpt4 book ai didi

java - 线程池连接 vs 单例设计模式获取单个数据库连接

转载 作者:行者123 更新时间:2023-12-05 03:04:52 24 4
gpt4 key购买 nike

我现在真的对这两者感到困惑,如下所示:1. 是在 JAVA 应用程序的整个运行期间仅将单例实例返回到数据库连接2. 是线程池连接的一般概念......我的意思是如果我们计划只有一个单例实例到数据库连接对象,为什么还要有池的概念,尽管我确实知道池的用途对于

这两个概念不是很相反吗,还是我在这里混淆了什么...?

最佳答案

在 JAVA 应用程序的整个运行期间是否只返回一个单例实例到数据库连接?

您可能不想为数据库连接返回一个Singleton 对象。如果不需要数据库并发,你可以选择这样做。在多线程环境中,最好的选择是使用连接池。

就是Thread pool connections的概念,笼统的说..

建立数据库连接是一个非常耗费资源的过程,涉及很多开销。此外,在多线程环境中,打开和关闭连接会使情况大大恶化。

在服务器中创建 JNDI 并在您的网络应用中使用它。

Context context=new InitialContext();
DataSource dataSource=(DataSource)
context.lookup("jdbc/test_jndi");

所以当DataSource 使用连接池 时,查找会从可用连接对象池中返回一个连接。如果没有可用连接,则查找会创建一个新连接。

Connection connection=dataSource.getConnection
("testuser","testpwd");
// ...
connection.close();

应用程序完成数据库处理后,它会显式关闭连接。这使得连接再次可用以再次重用。合用连接的关闭事件向合用模块发出恢复连接池的信号。

任何共享的资源都需要处理并发访问的开销,因此您希望通过不总是使用 单例 来减少开销。此外,为了减少资源密集型进程,连接池是首选。

关于java - 线程池连接 vs 单例设计模式获取单个数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52641870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com