java objectpool 对象池

 

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%%%%%%%%%%");
		}
	}

}
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值