2017-03-19 9 views
1

Jersey 기반 웹 서비스에 새 끝점을 추가하려고합니다. 엔드 포인트를 지원하는 논리는 다른 서비스를 10에서 50 개 호출해야합니다. 호출은 독립적이며 병렬 처리가 가능하므로 Executor 서비스를 사용하여 여러 스레드에 걸쳐 작업을 분산시킬 생각이었습니다.요청 내에서 executorService를 만들거나 webapp에서 하나의 인스턴스를 공유해야합니까?

각 요청에 대해 executorService를 인스턴스화해야하는지, 아니면 webapp 전체에 공유 executorService 인스턴스가 있어야하는지 궁금합니다. 나중의 경우, 실행해야하는 스레드의 수를 어떻게 결정합니까? 나는 각 요청에 대한 ExecutorService를 인스턴스화해야하거나 웹 응용 프로그램에서 공유 ExecutorService를 인스턴스가 있어야하는 경우

답변

2

궁금입니다. 나중의 경우, 실행해야하는 스레드의 수를 어떻게 결정합니까? 서버가 곧 또한 메모리가 부족하고 있기 때문에 일반적으로

번호, 당신은 각 웹 요청에 대한 executorService에게 (옵션-1)의 인스턴스를 안됩니다, 즉시 스레드 풀의 생성 (비용이 많이 들고 시간이 많이 소요).

따라서 executorService의 공유 인스턴스 (옵션 -2)는 서버 시작시 생성하여 & 요구 사항에 따라 스레드 풀 크기를 구성하고 성능 테스트를 수행해야합니다.

here을 참조하여 스레드 풀을 이해할 수 있습니다.

+0

옵션 2를 구현하는 가장 좋은 방법은 무엇입니까? ExecutorService를 공유 (예 : 정적 필드와 같은 컨트롤러에서 생성) 하시겠습니까? 아니면 ExecutionService를 공유하는 더 좋은 방법이 있다고 생각합니까? – Rahnzo