나는 멀티 스레딩이 사용되는 프로젝트에 참여하고있다. 모든 전화에 대해 약 4-5 개의 스레드가 생성됩니다 (이 시스템은 택시 콜 센터 용으로 개발되었습니다). 여기서 문제는 JMS 큐의 정보를 읽은 후 새로운 스레드가 발생하지 않아야한다는 것입니다. 이 문제는 임의로 발생합니다. StackOverflow에서 내가로드 인젝션 (load injection)을 권고 받았던 earlier posted similar question.자바에서 멀티 쓰레딩 문제
로드 인젝션에 대해 조사한 결과 사용자 액세스를 제어하는 콜 플로우에서 내 시스템에 액세스하므로 내 개발 서버에서 테스트를 수행 할 수 없습니다. 나는 JVM 튜닝과 스레드 풀링에 대해 공부하면서 시간을 보냈다. 이 특정 시스템 프로세스는 약 14K-15K 통화/일에 가까워지고 피크 시간에는 4-5 개의 스레드를 호출 할 때마다 대기열이 매우 높습니다 (대기열에서 대기중인 400-500 개의 호출이 발생할 수 있음). 로그에서 OutOfMemoryError와 같은 것을 보지 못했습니다. 스레드의 생성을 멈출 수있는 다른 이유가 있습니까?
내 JVM conf는 xms : 128m입니다. Xmx : 1024m 환경은 Windows Server 32 비트, 4GB RAM입니다.
threadstacksize 도움을 포함하면 아무런 방해없이 스레드를 생성 할 수 있습니까?
또한 스레드 풀링의 실현 가능성을 연구 중입니다. 고정 된 양의 스레드를 생성하는 동안 시스템 전체 성능에 영향을 미치는지 여부를 연구해야합니다.
OS가 동시에 활성화 할 수있는 스레드의 양을 제한하는 것은 불가능하지 않습니다. 이 문제가 어떻게 JVM에 영향을 미치는지 확신 할 수 없으므로 (예 : 사용자 코드에서이 한도를 숨기려면 어떤 조치를 취한 경우) 대답에 넣지 마십시오. – Romain
스레드 풀 경로로 이동하는 것이 좋습니다. http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool(int) – Qwerky