创建资源池(对象池)

 

    程序中许多资源的使用是有限制的,比如数据库连接,线程等。如果要对这些资源的创建和分配进行有效管理,则需要建立资源池也即对象池。

         资源池的功能是提供对象和回收对象。和普通对象工厂不同的是,它还有以下职责:确保创建的资源数不能大于最大值(如果有最大值的话);确保空闲资源不能过多;在没有空闲资源的时候,做应该做的事,比如报错或者让线程等待。

         虽然它的实现并不复杂,但是作为java开发人员,我们也不需要自己实现了。因为apachecommons-pool-<版本号>.jar包里面的类已经帮我们实现了此功能。我们只要实现资源的工厂类就可以了。

         类介绍:

         ·StackObjectPool:不控制资源个数的资源池。

    ·GenericObjectPool:是一个比较常用的资源池,它会控制资源总数量,和空闲资源数量。

    ·SoftReferenceObjectPool:允许java垃圾回收器回收资源对象的资源池。

   

    使用举例:

    例如,有一种资源(MyObject)需要被对象池管理起来。那么我们只要创建一个工厂类MyObjectFactory就可以了。

    代码如下:

得到资源池的代码如下:

ObjectPool pool=new GenericObjectPool(new MyObjectFactory(),20)

上面得到的资源池,最多可以提供20个资源对象。

之后程序中就可以用“MyObject mo=(MyObject)pool.borrowObject() 来代替“new MyObject()”了。

 

同时apachepool组件定义了标准的接口,很方便我们扩展。比如,需要这样一个对象池,它管理3种对象。比如“苹果对象”、“梨对象”、“桔子”,要求根据不同的参数得到不同的对象,但是3种对象的数量之和不超过50jar包中没有现成的对象池类,但是只要我们实现了poo的标准接口,依然可以像GenericObjectPool一样方便的使用。 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Redisson创建连接,可以按照以下步骤进行操作: 1. 添加Redisson依赖:在项目的构建文件中添加Redisson的依赖项。可以使用Maven或Gradle等构建工具来管理依赖。以下是使用Maven添加Redisson依赖的示例: ```xml <dependencies> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.16.1</version> </dependency> </dependencies> ``` 2. 创建Redisson连接配置:使用Redisson提供的Config对象来配置连接的参数。可以设置连接大小、最小空闲连接数、最大空闲连接数等参数。以下是创建连接配置的示例: ```java Config config = new Config(); config.useSingleServer() .setAddress("redis://127.0.0.1:6379") .setConnectionPoolSize(10) .setConnectionMinimumIdleSize(5); ``` 在上述示例中,使用`useSingleServer()`方法指定了连接方式为单节点模式,并设置了Redis服务器的地址和端口。`setConnectionPoolSize()`方法设置了连接的最大连接数,`setConnectionMinimumIdleSize()`方法设置了连接的最小空闲连接数。 3. 创建Redisson连接:使用Config对象来创建Redisson连接。可以使用单例模式或其他适当的方式来创建连接实例。以下是创建连接的示例: ```java RedissonClient redisson = Redisson.create(config); ``` 在上述示例中,使用`Redisson.create()`方法创建了Redisson连接实例。 4. 获取连接:通过连接获取一个连接实例。可以使用连接提供的方法来获取连接,例如`getConnection()`方法。以下是获取连接的示例: ```java RedisConnection connection = redisson.getConnection(); ``` 在上述示例中,使用`getConnection()`方法从连接中获取一个连接实例。 5. 执行操作:使用获取到的连接实例执行与Redis服务器的交互操作,例如读取数据、写入数据等。以下是执行操作的示例: ```java String value = connection.get("key"); connection.set("key", "value"); ``` 在上述示例中,使用获取到的连接实例执行了Redis的GET和SET操作。 6. 释放连接:在使用完连接后,将连接返回给连接以供重用。可以使用连接提供的方法来释放连接,例如`close()`方法。以下是释放连接的示例: ```java connection.close(); ``` 在上述示例中,使用`close()`方法释放了连接。 通过以上步骤,可以使用Redisson创建连接,并进行与Redis服务器的交互操作。记得在使用完连接后及时释放连接,以避免资源泄露和连接溢出的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值