2017-04-01 3 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가 처리하는 스레드 수를 제한하는 방법

"필수 경고 :이 작동, 같은 JNDI 등 컨테이너 기능을 방지 할 수 엄청난 성능 문제 대부분의 경우에있을 수있는 권장하지 않습니다 자바 EE 애플리케이션 서버 (심지어 톰캣)에서 자신의 스레드를 생성. 새 스레드는 자신이 속한 응용 프로그램을 알 수 없으므로 스레드 컨텍스트 클래스 로더는 설정되지 않으며 숨겨진 다른 많은 문제가 발생합니다. "

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