아파 치 Commons - pool 2
6487 단어 자바
설정 설명:
maxTotal , -1,-1 (int )
blockWhenExhausted true , ,
maxWaitMillis , 。 blockWhenExhausted true , 。 -1 , 。(long )
testOnBorrow false , true , factory.validateObject()
testOnCreate false, true , factory.validateObject()
( : testOnBorrow testOnCreate true , factory.validateObject() )
lifo , true,true ,false
fairness java.util.concurrent.locks.ReentrantLock.ReentrantLock 。 false, true ,false ,
timeBetweenEvictionRunsMillis , 。 -1 ,-1 。(long )
evictionPolicyClassName , org.apache.commons.pool2.impl.DefaultEvictionPolicy(String )
minEvictableIdleTimeMillis , 1800000, ,(long )
softMinEvictableIdleTimeMillis , -1 , ,(long )
( , , , )
maxIdle , 8 (int )
minIdle , 0 (int )
testWhileIdle false; true , false , factory.activateObject() factory.validateObject()
testOnReturn false; true , , , factory.validateObject() , , factory.destroyObject()
numTestsPerEvictionRun , 。 3, (int )。
:
0 , 。
0 , (int)Math.ceil( / Math.abs(numTestsPerEvictionRun) );
0 , Math.min( numTestsPerEvictionRun, );
사용 사례:
대상 연못 공장 류 는 생산, 회수, 검사 대상 을 책임 진다.
public class StringBufferFactory
extends BasePooledObjectFactory {
@Override
public StringBuffer create() {
return new StringBuffer();
}
/**
* Use the default PooledObject implementation.
*/
@Override
public PooledObject wrap(StringBuffer buffer) {
return new DefaultPooledObject(buffer);
}
/**
* When an object is returned to the pool, clear the buffer.
*/
@Override
public void passivateObject(PooledObject pooledObject) {
pooledObject.getObject().setLength(0);
}
@Override
public void activateObject(PooledObject p) throws Exception {
// TODO Auto-generated method stub
super.activateObject(p);
}
}
구체 적 인 사용:
import org.apache.commons.pool2.ObjectPool;
public class ReaderUtil {
private ObjectPool pool;
public ReaderUtil(ObjectPool pool) {
this.pool = pool;
}
public String readToString(String abc){
StringBuffer buf;
try {
buf=pool.borrowObject();
buf.append(abc);
} catch (Exception e) {
throw new RuntimeException("Unable to borrow buffer from pool" + e.toString());
}
String result=buf.toString().trim();
try {
//System.out.println("pool sizebefore:"+pool.getNumActive());
System.out.println("pool size before:"+pool.getNumIdle());
pool.returnObject(buf);
System.out.println("pool size before:"+pool.getNumIdle());
//System.out.println("pool size after:"+pool.getNumActive());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}
원본 코드 다운로드
이 노트 만!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.