On Tue, 29 Apr 2014 17:16:32 +0000, Tim wrote: > Hi guys, > > I've the following snipped: > > TcpSocket oSocket = new TcpSocket(AddressFamily.INET); oSocket.bind(new > InternetAddress("127.0.0.1", 12345)); oSocket.blocking(false); > oSocket.listen(0); > > while(true) > { > try { > Socket oRequestSocket = oSocket.accept(); > > Request oRequest = new Request(oRequestSocket); > oRequest.start(); // Start request thread > } > catch (SocketAcceptException oException) > { > Thread.yield(); > } > } > > When I execute the code above, the while(true)-loop uses nearly 100% (1 > complete cpu). When I connect to the server multiple times (note that > each Request-Thread has it's own while(oRequestSocket.isAlive)-loop) the > cpu usage easily reaches 120, 130... 200 and more cpu usage. > > Is there anything I'm doing wrong? I don't want use blocking sockets... > how to handle 100 or 1000 connections when the main server thread > already consumes 1 cpu?
If you use blocking sockets, you should probably spawn a new thread for each client. If you use non-blocking sockets, you need to use poll or select to wait for incoming connections or data.