当前位置:首页 > 开发 > 编程语言 > Java > 正文

java objectpool 对象池

发表于: 2012-05-14   作者:blackproof   来源:转载   浏览次数:
摘要:   jdk内部对象池有三个,接口为ObjectPool GenericObjectPool StackObjectPool SoftReferenceObjectPool   带有可以的对象池 StackKeyObjectPool GenericKeyObjectPool   对应对象池的对象池工厂,接口为PoolableObjectPool B

 

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 objectpool 对象池

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Jakarta对象池 ☆ 为什么使用对象池 恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的
Jakarta对象池 ☆为什么使用对象池 恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的消
Jakarta对象池 ☆ 为什么使用对象池 恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的
Jakarta对象池 ☆为什么使用对象池 恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的消
Jakarta对象池 ☆ 为什么使用对象池 恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的
问题描述:在实现对象池的时候都会面对一个回收的问题,大部分实现都是将回收的主动权交给了使用方
早在2008年三年就发布了一个对象池工具类,允许你在集合中放置对象,在需要时再用,众所周知Flex的
1、对象池技术并没有限制说只能创建一个对象,而且这种技术同样适用于创建固定数量的对象,然而,这
C# 对象池的实现 对象池服务可以减少从头创建每个对象的系统开销。在激活对象时,它从池中提取。在
java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,小菜早就对常量池有所耳闻,这
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号