2017-09-18 8 views
0

클라이언트의 TCP 소켓 연결을 허용하는 Java 프로그램을 만들고 싶습니다. 클라이언트가 서버를 연결하자마자 해당 클라이언트를 처리 할 새 스레드를 만듭니다.
단일 코어 프로세서가있는 서버에 대해 우분투 VM을 실행하고 있다면 얼마나 많은 클라이언트를 지원할 수 있습니까?
또한 최대 스레드 수는 프로세서 수에 따라 다릅니 까?
클라이언트 처리를위한 서버 측 코드에 대한 최적화를 제안하려면 그렇게하십시오. 여기에 코드입니다 :최대 Java에서 소켓을 실행하는 스레드 수

SS = new ServerSocket(8080); 
while(1) { 
Socket S = SS.accept(); 
BufferedReader DIS = new BufferedReader(new InputStreamReader(S.getInputStream())); 
PrintWriter DOS = new PrintWriter(S.getOutputStream(),true); 
ServerThread CT = new ServerThread(S,DIS,DOS); // Class to handle client functions 
Thread T = new Thread(CT); 
T.start(); } 

당신이 볼 수 있듯이, 고객의 더 많은 수의, 더 많은 스레드가 생성됩니다.

+0

참조 : http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html –

+0

또한 : http://docs.oracle.com/javase/tutorial/networking/index.html –

+0

@ UsagiMiyamoto는 참조 문서에 감사합니다 –

답변

0

제가 의심 할 여지가 있다면 싱글 코어 프로세서가있는 서버에 대해 우분투 VM을 실행하고 있다면 얼마나 많은 클라이언트를 지원할 수 있습니까?

만드는 스레드 수에 관계없이 프로세서를 사용할 수 있으면 스레드가 실행됩니다. Runtime 클래스를 사용하여 런타임에 사용 가능한 프로세서를 검사하여이를 최적화 할 수 있습니다.

Runtime.getRuntime().availableProcessors(); 

또한, 프로세서의 수에 따라 달라 스레드의 최대 수는?

AFAIK를 사용하면 스레드를 만들 수 있지만 프로세서를 사용할 수있는 경우에만 실행 상태가됩니다.

+0

답변 해 주셔서 감사합니다. –