Java GenericObject池阈值

Java GenericObject池阈值,java,multithreading,spring,threadpool,Java,Multithreading,Spring,Threadpool,GenericObject池配置为12个线程。一旦12个线程用完,我发现调用线程就变成僵尸。我认为默认行为是将额外请求排队,并在可用时提供服务,而不是终止调用线程 private ImplClass implObject; for (Iterator iter = anArrayList.iterator(); iter.hasNext();) { //Gets a GenericObjectPool Object implObject = (ImplClass) this.

GenericObject池配置为12个线程。一旦12个线程用完,我发现调用线程就变成僵尸。我认为默认行为是将额外请求排队,并在可用时提供服务,而不是终止调用线程

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> 

12
12
-1

当达到阈值时,您能为阻塞GenericObject池建议一个配置吗?

我意识到我的设置是正确的。只有一个对象没有返回到池中,因为没有再次创建线程。

您使用的是什么框架?我认为您的第二个配置还可以。你所说的调用线程变成僵尸是什么意思?如何检查线程状态?我已更正此问题。问题是我并没有将对象返回到池中。后来,我制作了一个专用线程,将发布的对象返回到poool,并解决了这个问题。