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 2013-02-20 16:53:16
spring 2 + executor – fortm 2013-02-20 16:55:50
我认为你的第二个配置是可以的。 “主叫线程僵尸”意味着什么?你如何检查线程状态? – ericson 2013-02-22 14:08:35