jdk内部对象池有三个,接口为ObjectPool
GenericObjectPool
StackObjectPool
SoftReferenceObjectPool
带有可以的对象池
StackKeyObjectPool
GenericKeyObjectPool
对应对象池的对象池工厂,接口为PoolableObjectPool
BasePoolableObjectFactory 基本对象池方法
package com.test.objPool;
import java.util.NoSuchElementException;
import org.apache.tomcat.dbcp.pool.ObjectPool;
import org.apache.tomcat.dbcp.pool.impl.StackObjectPool;
import com.test.objPool.ObjectPoolableFactory.oneObject;
public class TestForObjPool {
public static void main(String[] args)
{
ObjectPool pool = new StackObjectPool(new ObjectPoolableFactory());
try {
for(int i=0;i<10;i++)
{
oneObject user = (oneObject)pool.borrowObject();
user.name = "Borned";
user.sayMyName();
oneObject user2 = (oneObject)pool.borrowObject();
user2.name="Borned2222";
user2.sayMyName();
pool.returnObject(user);
oneObject user3 = (oneObject)pool.borrowObject();
user3.name="Borned3333";
user3.sayMyName();
pool.returnObject(user2);
pool.returnObject(user3);
}
} catch (NoSuchElementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.test.objPool;
import org.apache.tomcat.dbcp.pool.BasePoolableObjectFactory;
public class ObjectPoolableFactory extends BasePoolableObjectFactory{
int i=0;
@Override
public Object makeObject() throws Exception {
// TODO Auto-generated method stub
System.out.println("===================="+i);
return new oneObject();
}
public void passivateObject(Object one)
{
oneObject oObj = (oneObject)one;
oObj.clear();
}
class oneObject
{
int num = ++i;
String name = "";
void sayMyName()
{
System.out.println(i+" "+num+"((((((((("+name+")))))))))");
}
public oneObject()
{
System.out.println("--start---generate a object");
System.out.println(num);
System.out.println("--end----------------------");
}
public void clear()
{
name = "";
System.out.println("%%%%%%%retrive%%%%%%%%%%");
}
}
}
分享到:
相关推荐
基于Java的对象池管理系统 项目简介 本项目是一个基于Java的对象池管理系统,旨在通过对象池技术减少频繁创建和销毁对象所带来的开销,从而提高系统性能和资源利用率。...4. 对象池类(ObjectPool)
下面是一个简单的Java对象池实现,以`ObjectPool`类为例: ```java import java.util.ArrayList; import java.util.List; public class ObjectPool<T> { private List<T> pool; private ObjectFactory<T> ...
### Java对象池技术的原理 在Java开发领域中,对象池技术是一种常用的设计模式,用于管理可重用的对象集合,从而提高系统性能并减少资源消耗。本文将详细探讨Java对象池技术的基本原理及其具体实现方式。 #### ...
Java对象池是一种优化资源管理的技术,它通过复用已经创建并初始化过的对象,避免了频繁地创建和销毁对象带来的性能开销。在Java中,对象池通常用于数据库连接、线程、Socket等昂贵资源的管理。下面我们将深入探讨...
### Java对象池技术的原理及其实现 #### 一、对象池的概念与作用 对象池是一种软件设计模式,主要用于管理那些频繁创建与销毁且代价较高的对象。通过预先创建一定数量的对象,并将其保存在一个集合(通常称为池)...
在Java编程中,对象池是一种优化技术,用于提高程序性能并减少系统资源的消耗。对象池的基本思想是预先创建...对于深入理解和使用Java对象池的开发者来说,"ObjectPool-master"这样的项目是一个很好的学习和实践平台。
Android 对象池 谨慎和智能地使用系统资源对 Android 来说至关重要。 过度消耗堆内存会带来OutOfMemory异常和无数次遇到垃圾收集器(GC)。 GC会占用 UI 线程的宝贵时间,并且会导致丢弃 UI 帧,从而提供糟糕的用户...
在Java中,`java.util.concurrent`包下的`ObjectPool`接口就是用于定义对象池的行为。通过对象池,可以避免频繁的实例化和垃圾回收,提高程序运行速度。例如,JDBC的`Statement`和`PreparedStatement`对象池,可以...
这个压缩包包含三个文件:`ObjectPool.java`、`Test.java`和`TestObject.java`,分别代表了对象池的实现、测试类以及一个用于测试的对象类。 `ObjectPool.java` 文件很可能实现了对象池的基本逻辑。它可能包括以下...
在`src`目录中,源代码可能包含了实现对象池的类和相关方法,例如`ObjectPool.java`,`ObjectFactory.java`等。开发者可以查看这些源码以理解其实现细节,例如如何维护对象池、如何实现对象的分配与回收,以及如何...
在上述代码示例中,`ObjectPool` 类实现了对象池的基本结构: - **Stack**:使用Java的Stack类作为对象池,它是一个基于链表的后进先出(LIFO)数据结构,非常适合用于对象池,因为获取和归还对象的操作都与栈操作...
开发者可以通过实现PoolableObjectFactory和利用ObjectPool接口,结合ObjectPoolFactory来创建定制的对象池,以提高系统性能并减少资源消耗。在实际应用中,需要根据对象的特性和系统需求来决定是否采用对象池化技术...
Apache的common-pool工具包提供了开发通用对象池的一些接口和实现类,其中最基本的两个接口是ObjectPool和PoolableObjectFactory。ObjectPool接口中有几个最基本的方法: 1. addObject() : 添加对象到池 2. ...
因此,从池中删除对象时,在将对象放回之前,该对象在池中不可用。 组对象具有生命周期: 创建验证销毁。 顺序图 优势 提供显着的性能提升。 管理您的连接,并提供一种重用和共享它们的方式。 当类的实例的初始化...
对象池模式是一种设计模式,它在Java编程中用于管理和重用昂贵资源,如数据库连接、线程或网络套接字,以减少系统性能开销。当频繁创建和销毁这些资源时,对象池模式能显著提高效率。在描述的示例中,我们看到一个...
例如,Java中的数据库连接池就是对象池的一个典型应用,它减少了创建和关闭数据库连接的次数,提升了系统的运行效率。 `license.txt` 文件通常包含软件的许可协议,规定了该代码库的使用、分发和修改的法律条件。在...
MyDotey对象池 MyDotey ObjectPool,一个通用的对象池,基于ConcurrentHashMap&BlockingQueue的实现,易于使用。 分别在java / dotnet中实现。 代码是干净的。 易于阅读。 ThreadPool和AutoScaleThreadPool也是基于...
Apache Commons Pool 是一个Java对象池库,主要用于管理资源,尤其是短生命周期的对象,通过对象池化技术提高性能和效率。在Java应用中,频繁创建和销毁对象会消耗大量系统资源,对象池可以重用已创建的对象,减少新...