Apache Commons Pool 使用的例子
时间: 2023-06-14 21:07:57 浏览: 140
Apache Commons Pool 是一个用于对象池化技术的开源 Java 库。它提供了一组可重用对象的通用接口和基于通用接口的实现,可以用于构建高性能、可扩展和线程安全的对象池。
以下是一个简单的使用 Apache Commons Pool 的例子:
1. 添加 Maven 依赖:
```xml
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>2.9.0</version>
</dependency>
```
2. 创建一个可重用对象的类:
```java
public class Connection {
private String url;
private String username;
private String password;
// getters and setters
}
```
3. 创建一个工厂类来创建和销毁对象:
```java
public class ConnectionFactory extends BasePoolableObjectFactory<Connection> {
private final String url;
private final String username;
private final String password;
public ConnectionFactory(String url, String username, String password) {
this.url = url;
this.username = username;
this.password = password;
}
@Override
public Connection makeObject() throws Exception {
return new Connection(url, username, password);
}
@Override
public void destroyObject(Connection connection) throws Exception {
connection.close();
}
}
```
4. 创建一个对象池:
```java
public class ConnectionPool {
private GenericObjectPool<Connection> pool;
public ConnectionPool(String url, String username, String password) {
ConnectionFactory factory = new ConnectionFactory(url, username, password);
GenericObjectPoolConfig<Connection> config = new GenericObjectPoolConfig<>();
config.setMaxTotal(10);
pool = new GenericObjectPool<>(factory, config);
}
public Connection getConnection() throws Exception {
return pool.borrowObject();
}
public void releaseConnection(Connection connection) {
pool.returnObject(connection);
}
}
```
5. 使用对象池:
```java
ConnectionPool pool = new ConnectionPool("jdbc:mysql://localhost:3306/test", "root", "password");
Connection connection = pool.getConnection();
// use connection
pool.releaseConnection(connection);
```
这个例子中,我们创建了一个 Connection 对象,使用了 ConnectionFactory 类来创建和销毁它们。我们还创建了一个 ConnectionPool 类来管理对象池,并使用它来获取和释放 Connection 对象。最后,我们展示了如何使用 Connection 对象来执行数据库操作。
阅读全文