2017-09-18 9 views
0

クライアントからのTCPソケット接続を受け付けるJavaプログラムを作成したいとします。 クライアントがサーバーに接続するとすぐに、そのクライアントを処理するための新しいスレッドを作成します。
シングルコアプロセッサを搭載したサーバ用のUbuntu 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

私は、 シングルコアプロセッサを搭載したサーバ用のUbuntu VMを実行している場合、サポートできるクライアントの数はどれくらいですか?

作成するスレッドの数は関係なく、プロセッサが使用可能な場合に実行されます。これは、実行時にRuntimeクラスを使用して使用可能なプロセッサーをチェックすることで最適化できます。

Runtime.getRuntime().availableProcessors(); 

また、 プロセッサの数に依存したスレッドの最大数は?

AFAIKを使用すると、スレッドを作成できますが、プロセッサが利用可能な場合にのみ実行状態になります。

+0

答えに感謝しています –

関連する問題