2017-04-01 77 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