介绍:
客体池技术基本原理的核心是两点。 缓存和共享是指对于频繁使用的对象,通过缓存并使其可在后续APP应用程序中重用,而不是在使用后立即释放,从而减少对象的创建和释放次数,提高APP应用程序的性能事实上,由于对象池技术将对象限制为一定数量,因此还可以有效地减少APP应用程序内存开销。
应用:
并不是在任何情况下都适合采用象池技术。 基本上,只有在反复生成对象的操作成为影响性能的重要因素时,才适合采用对象池技术。 通过池化提高性能不重要的情况下,为了维持代码的简洁,最好不要采用对象池化技术。 因为对象池的维护也需要一定的内存。
示例:
publicclasssimplepoolimplementspools.pool {
私有文件对象[ ] m pool;
私有int mpoolsize;
//*
* creates a new实例。
*
* @ parammaxpoolsizethemaxpoolsize。
*
* @ throwsillegalargumentexceptionifthemaxpoolsizeislessthanzero。
*/
publicsimplepool (intmaxpoolsize ) {
if(maxpoolsize=0) {
thrownewillegalargumentexception (themaxpoolsizemustbe0);
}
mPool=new Object[maxPoolSize];
}
@Override
@suppresswarnings('unchecked ' ) )。
public T acquire (
if(mpoolsize0) (
finalintlastpooledindex=mpoolsize-1;
tinstance=(t ) mPool[lastPooledIndex];
mPool[lastPooledIndex]=null;
moolsize----;
返回实例;
}
返回空值;
}
@Override
publicbooleanrelease(tinstance )
if (isin pool (实例) ) }
thrownewillegalstateexception (' alreadyinthepool!' );
}
mpoolsizempool.length (if ) {
mPool[mPoolSize]=instance;
mPoolSize;
返回真;
}
返回假;
}
privatebooleanisinpool (t instance ) {
for(intI=0; i mPoolSize; I ) {
if(mpool[I]==instance ) {
返回真;
}
}
返回假;
}
}
使用方法:
staticsimplepoolsimplepool=newsimplepool (5;
publicstaticvoidmain (string [ ] args ) {
for(intI=0; i5; I ) {
pointpoint=newpoint(I,i 1 );
simplepool.release(point;
}
for(intj=0; j10; j ) {
Point point=(Point ) simplePool.acquire (;
if (重点!=null ) {
system.out.print(point.x ',' point.y );
}
}
}