我有一些带有@Asynchronous
方法的EJB。
我试着弄清楚当池中配置的所有线程都处理并且还有一个异步调用时会发生什么?
我在this post中找到了一些答案,但它仅适用于Websphere:
我想知道JBoss上发生了什么,以及是否有一些选项可以像在Websphere上那样对线程进行排队。
我像这样配置线程池:
<subsystem xmlns="urn:jboss:domain:ejb3:1.2">
<async thread-pool-name="default"/>
<thread-pools>
<thread-pool name="default">
<max-threads count="10"/>
<keepalive-time time="100" unit="milliseconds"/>
</thread-pool>
</thread-pools>
...
</subsystem>
我尝试使用bounded-queue-thread-pool
insinde <thread-pools>
元素,但它不起作用。
谢谢你的帮助
答案 0 :(得分:4)
以下是对游泳池的描述。
&#34;具有无界队列的线程池执行程序。这样的线程池具有核心大小和没有上限的队列。 提交任务时,如果正在运行的线程数小于核心大小,则会创建一个新线程。否则,任务将被置于队列中。如果允许将太多任务提交给此类执行程序,则可能会出现内存不足的情况。 &#34;名称&#34; attribute是创建的执行程序的名称。 &#34; max-threads&#34;必须使用attribute来指定线程池大小。嵌套&#34; keepalive-time&#34; element可用于指定池空闲在空闲时应保持运行的时间量;如果未指定,则线程将一直运行,直到执行程序关闭。 &#34;线程工厂&#34; element指定用于创建工作线程的特定线程子系统线程工厂的bean名称。通常不会为EJB3线程池设置它,并且将使用适当的默认线程工厂。&#34;
来源:http://www.jboss.org/schema/jbossas/jboss-as-ejb3_1_2.xsd