2017-04-01 78 views
2

类javax.enterprise.concurrent.ManagedExecutorService管理Enterprise Java Bean中的线程。 As threads in EJBs should not be started in the classical Java SE way, I use the ManagedExecutorService to handle threads.如何限制ManagedExecutorService执行的线程数

“强制性警告:创建在Java EE应用服务器(甚至Tomcat的)是不鼓励你自己的线程,它可以是一个巨大的性能问题,在大多数情况下,可以防止容器的功能,例如JNDI,从工作。新线程不知道它们属于哪个应用程序,线程上下文类加载器将不会被设置以及许多其他隐藏问题。“

在Java SE中,您可以定义最大线程数,如下面的代码所示。

java.util.concurrent.Executors.newFixedThreadPool(numberOfThreadsInThePool); 

你知道如何限制ManagedExecutorService执行的线程数吗?

回答

0

当您使用EE容器时,您应该通过配置容器来解决有关线程数的问题。对于Glassfish,请查看关于线程池管理和性能调优的Oracle文档。

0

当在Glassfish Application Server中创建ManagedExcecutorService时,可以确定最大线程池大小。根据这篇文章https://blogs.oracle.com/arungupta/entry/create_managedexecutorservice_managedscheduledexecutorservice_managedthreadfactory_contextservice glassfish的asadmin命令有一个参数“maximumpoolsize”它定义了ManagedExcecutorService使用的最大线程数。

asadmin create-managed-executor-service concurrent/myExecutor --maximumpoolsize=20