2017-04-01 22 views
2

javax.enterprise.concurrent.ManagedExecutorServiceクラスは、Enterprise JavaBeans内のスレッドを管理します。 As threads in EJBs should not be started in the classical Java SE way, I use the ManagedExecutorService to handle threads.ManagedExecutorServiceによって実行されるスレッド数を制限する方法

「義務警告:働いてから、JNDIなどのコンテナ機能を、防ぐことができます巨大なパフォーマンスの問題が、ほとんどの場合にあり得るよう推奨されたJava EEアプリケーションサーバ(偶数のTomcat)で独自のスレッドを作成します。新しいスレッドは、どのアプリケーションに属しているのか分からず、スレッドコンテキストクラスローダーは設定されず、その他多くの隠された問題が発生します。

Java SEでは、次のコードに示すように、スレッドの最大数を定義できます。

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

ManagedExecutorServiceによって実行されるスレッドの数を制限する方法を知っていますか?

答えて

0

EEコンテナを使用している場合は、コンテナの構成によってスレッド数に関する問題を解決する必要があります。 Glassfishの場合は、スレッド・プールの管理とパフォーマンスのチューニングに関するOracleのマニュアルを参照してください。

0

最大スレッドプールサイズは、ManagedExcecutorServiceがGlassfishアプリケーションサーバーで作成されたときに決定されます。この資料によると、https://blogs.oracle.com/arungupta/entry/create_managedexecutorservice_managedscheduledexecutorservice_managedthreadfactory_contextservice glassfishのasadminコマンドは、"maximumpoolsize"を持ち、ManagedExcecutorServiceで使用されるスレッドの最大数を定義しています。

asadmin create-managed-executor-service concurrent/myExecutor --maximumpoolsize=20 
関連する問題