1
GenericObjectPool은 12 개의 스레드로 구성됩니다. 12 개의 스레드가 고갈되면 호출자 스레드가 좀비로 이동합니다. 기본 동작은 여분의 요청을 큐에 넣고 호출자 스레드를 죽이는 대신 사용할 수있는 한 번 제공하는 것입니다.GenericObjectPool 임계 값
private ImplClass implObject;
for (Iterator iter = anArrayList.iterator(); iter.hasNext();) {
//Gets a GenericObjectPool Object
implObject = (ImplClass) this.getImplPool().borrowObject();
some code
}
아래와 같이 두 가지 구성을 모두 시도해 보았습니다. 내 블로킹은 문장을 빌려서 루프 내에서 그 아래의 라인을 처리하는 것으로부터 재개되는 한 괜찮습니다.
<bean id="ImplPool" class="org.apache.commons.pool.impl.GenericObjectPool">
<constructor-arg>
<ref local="ImplFactory"/>
</constructor-arg>
<constructor-arg>
<value>12</value>
</constructor-arg>
</bean>
<bean id="ImplPool" class="org.apache.commons.pool.impl.GenericObjectPool">
<constructor-arg>
<ref local="ImplFactory"/>
</constructor-arg>
<constructor-arg>
<value>12</value>
</constructor-arg>
<constructor-arg>
<bean id="org.apache.commons.pool.impl.GenericObjectPool.WHEN_EXHAUSTED_BLOCK"
class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" />
</constructor-arg>
<constructor-arg>
<value>-1</value>
</constructor-arg>
</bean>
한계에 도달했을 때 차단하는 GenericObjectPool에 대한 설정을 제안 해 주실 수 있습니까?
어떤 프레임 워크를 사용하고 있습니까? – 75inchpianist
spring 2 + executor – fortm
두 번째 구성이 정상이라고 생각합니다. 'caller thread goes zombie'이란 무엇을 의미합니까? 스레드 상태를 어떻게 확인합니까? – ericson