前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是池化

什么是池化

原创
作者头像
泽霖
发布2023-11-09 00:18:17
1940
发布2023-11-09 00:18:17
举报
文章被收录于专栏:分享技术

池化思想对于 JAVA 是意义非凡的,因为其避免了很多的创建开销。

线程资源,数据库连接资源,TCP连接等,这些对象的初始化,通常是要花费较长时间的,如果我们频繁的进行申请和销毁,就会消耗大量的系统资源,进而对性能造成影像。于此同时这些对象又有一个共性的特征,就是如果他们是可以池化的,通过创建一个虚拟的池,将这些资源预存起来,当我们需要的时候,从中按需获取,就可以了。

数据库连接池

先从数据库连接池讲起吧,其基本思路就是在系统初始化的时候,就把数据库连接作为对象储存起来,放在内存中,当用户需要在访问数据库的时候,我们不创建新的连接,而是从连接池汇中获取一个已经创建好的空闲的连接对象。在使用完后,也不关闭,物归原主,依旧放进连接池,以供之后使用。这些连接的行为都由连接池来管理。任务池的管理就需要我们通过参数来调整了。通常连接池中的初始连接数,连接上限,连接下限,连接的最大使用次数,最大空闲时间这些参数是需要我们关注的,也能用连接池自身的管理机制来进行监视。

参数

**最小数据库连接数(连接下限)** :无论数据库是否被使用,都保持至少有这个数量的连接数量

**最大数据库连接数(连接上限)** :连接池能占有的最大连接数,当请求的连接数超过最大数量时,请求就放进等待队列。

**最大等待时间**:当没有可用连接时,连接池等待连接被归还的最大事件,超时就异常。

代码语言:txt
复制
// 

    ComboPooledDataSource dataSource = new ComboPooledDataSource();

    //1.1 设置基本项

    dataSource.setDriverClass("com.mysql.jdbc.Driver");

    dataSource.setJdbcUrl("jdbc:mysql://localhost:8080/...");

    dataSource.setUser("");

    dataSource.setPassword("");

    //1.2其他项

    // \* 初始化连接池中连接的个数

    dataSource.setInitialPoolSize(5);

    // \* 最小|最大连接池中连接的个数

    dataSource.setMinPoolSize(2);

    dataSource.setMaxPoolSize(10);

    // \* 最大空闲数

    dataSource.setMaxIdleTime(60);

    // \* 每次增长个数

    dataSource.setAcquireIncrement(2);

    //2获得连接

    Connectionconn = dataSource.getConnection();

    System.out.println(conn);

线程池 对象池 下次再聊

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库连接池
    • 参数
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档