자바 1.7에 대한 몇 개의 스레드가 관리 가능합니까? 클라이언트가 서버에 로그인 할 수있는 서버/클라이언트 웹 프로그램에서. 이 로그인은 statefull입니다. 클라이언트 수> 서버 당 3000자바 1.7에서 몇 개의 스레드를 관리 할 수 있습니까?
답변
Java에는 스레드 수를 Integer.MAX_VALUE로 제한하는 API가 있습니다. (~ 20 억)
그러나 OS/하드웨어는 실제 제한 사항입니다. 자신이하는 일에 따라 100 ~ 10K가 한계가됩니다.
일반적으로 성능 향상을 위해 스레드가 생성됩니다. 그러나 오버 헤드가 추가되므로 스레드를 추가하면 성능이 저하 될 수 있습니다. 드문 경우이지만 두 개의 스레드가 하나의 스레드만큼 좋지 않습니다. 더 많은 쓰레드가 성능을 해치는 지점은 애플리케이션, 하드웨어 및 사용 방법에 따라 다릅니다.
참고 : 논리 코어가 16 개인 경우 특정 시점에 최대 16 개의 스레드 만 실행됩니다.
상한값은 사용 가능한 힙 공간과 관련이 있다고 생각합니다. 그러나 현실적인 한계는 Java 버전보다 시스템을 실행중인 하드웨어와 관련이 있습니다.
힙 공간이 없습니다. 32 비트 시스템에서 스택을위한 가상 주소 공간. –
Java 1.7 (아직 없음)이 없습니다. 64 비트 시스템에서는 수만 가지를 사용할 수 있습니다. 32 비트 시스템에서는 주로 스택의 가상 주소 공간으로 제한됩니다.
링크 해 주셔서 감사합니다. – DanialAbdi
이론적으로는? 수천.
실제로는 시스템에 따라 다릅니다. 스레드가 부족해지기 전에 메모리가 부족해질 가능성이 큽니다.
"충분" 그렇지 않은 경우 적절한 Executor와 함께 스레드 풀을 사용합니다. 당신이해야 할 일은 무엇입니까?
연결 관리 – DanialAbdi
JBoss Netty를 살펴보십시오. http://jboss.org/netty –
각 스레드에는 자체 스택 공간이 있습니다. 스택은 힙 외부에 있지만 JVM에 할당 된 메모리 내에 저장됩니다. 따라서 최대 스레드는 일반적으로 OS가 JVM에 할당 할 수있는 메모리 양에 의해 제한됩니다. Windows에서는 JVM의 메모리가 부족하기 전에 최대 스레드 수가 약 1000-2000에 해당합니다.
자바 쓰레드는 OS 할당 스택 공간을 사용하는데 이는 __NOT__가 JVM에 할당되어 있습니다. 각 스레드 스택과 관련된 JVM 메모리가 적지 만 실제로 스택은 OS 프로세스 메모리 __external__에서 JVM으로 할당되어 JVM의 메모리 사용량이 적게됩니다. Xmx/Xms는 실제로 사용 가능한 스레드 수를 __increase__ 할 수 있습니다 –
- 1. 몇 개의 스레드를 동시에 실행할 수 있습니까?
- 2. 몇 개의 스레드를 만들까요?
- 3. Grand Central Dispatch는 몇 개의 스레드를 생성해야합니까?
- 4. BackgroundWorker를 사용하거나 스레드를 직접 관리 할 수 있습니까?
- 5. 몇 개의 코어가 있습니까?
- 6. 하나의 키로 몇 개의 응용 프로그램을 서명 할 수 있습니까?
- 7. fgrep은 몇 개의 검색 문자열을 처리 할 수 있습니까?
- 8. 선택 상자에 몇 개의 옵션이 있는지 테스트 할 수 있습니까?
- 9. SQLite의 테이블에서 몇 개의 컬럼을 생성 할 수 있습니까?
- 10. MySQL은 몇 개의 데이터베이스를 처리 할 수 있습니까?
- 11. 하나의 ActiveScheduler가 몇 개의 활성 객체를 처리 할 수 있습니까?
- 12. 스레드를 사용하여 자바 스크립트를 어떻게 호출 할 수 있습니까?
- 13. 자바 애플리케이션 서버는 스레드를 파괴 할 수 있습니까? 그렇다면 어떻게?
- 14. 포트에서 몇 개의 소켓을 만들 수 있습니까?
- 15. UINavigationController에 몇 개의 버튼이있을 수 있습니까?
- 16. CSS에 몇 개의 @rules이 있습니까?
- 17. 몇 개의 확인란이 선택되어 있습니까?
- 18. 하나의 시스템에서 몇 개의 JVM을 가질 수 있습니까?
- 19. 배열에 몇 개의 요소가 있습니까?
- 20. SQL에 몇 개의 join이 있습니까?
- 21. 서블릿에서 스레드를 생성 할 수 있습니까?
- 22. 어떻게 패널을 사용하여 자바 애플릿을 관리 할 수 있습니까?
- 23. 자바 스크립트 - 확인을 위해 몇 개의 인수가 있습니까?
- 24. 한 개의 스레드가 두 개의 SurfaceView를 제어하도록 할 수 있습니까?
- 25. 여러보기에서 UIButton을 유지 관리 할 수 있습니까?
- 26. glGetError가 스레드를 차단할 수 있습니까?
- 27. 두 개의 개별 프로젝트를 유지 관리 할 수 있지만 하나의 DLL로 병합 할 수 있습니까?
- 28. 몇 개의 System.Timers.Timer 인스턴스를 만들 수 있습니까? 얼마나 확장 할 수 있습니까?
- 29. iPhone에서 몇 번 터치 할 수 있습니까?
- 30. 스프라이트 애니메이션 관리 스레드를 사용하여
몇 명이나 되셨습니까? –
좀 더 구체적으로 대답 할 필요가 있습니다. 당신이 성취하려는 것을 요약 해주십시오. – AaronLS
서버/클라이언트 웹 프로그램 클라이언트가 서버에 로그인 할 수있는 프로그램. 이 로그인은 statefull입니다. – DanialAbdi