我想创建一个接受来自客户端的TCP套接字连接的Java程序。
一旦客户端连接我的服务器,我就创建一个新线程来处理该客户端
我怀疑的是,如果我为使用单核处理器的服务器运行Ubuntu VM,我可以支持多少客户端?
另外,最大线程数是否取决于处理器的数量?
如果您想建议对客户端处理的服务器端代码进行一些优化,请执行此操作。这是代码片段:
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 :(得分:0)
我怀疑的是,如果我正在为服务器运行Ubuntu VM 单核处理器,我可以支持多少客户端?
无论您创建多少个线程,如果处理器可用,它们都将被执行。您可以通过使用Runtime
类在运行时检查可用的处理器来优化它。
Runtime.getRuntime().availableProcessors();
此外,最大线程数是否取决于数量 处理器?
AFAIK,您可以创建线程,但只有处理器可用时它们才会处于运行状态。