while死循环中的算法问题
while(true){ //2、调用accept() 方法,监听客户端的连接。 socket = serverSocket.accpet(); //创建一个线程,并通过这个线程与客户端进行通信。 //创建一个新的线程 ServerThread serverThread = new ServerThread(socket); //启动线程 serverThread.start(); }
老师的代码如上,这是一个死循环。
第一个问题:
就是ServerSocket不进行关闭,一旦有客户端退出,是不是会空耗资源?
第二个问题:
在等待连接的过程中,每一次循环都要建立一个新的ServerThread,即便socket是空的,但是过程还是会走完,这样是不是也算空耗资源?
第三个问题:
如果有客户端退出,在ServerSocket线程中会关闭相关资源,但是ServerSocket并没有关闭。这个ServerSocket是否依然存在?如果存在以何种状态存在?
我将创建新线程的过程添加一个if作为判断,用来避免创建空的ServerTread类,是否会更好些?
while(true){ //2、调用accept() 方法,监听客户端的连接。 socket = serverSocket.accpet(); //创建一个线程,并通过这个线程与客户端进行通信。 if(socket != null){ //创建一个新的线程 ServerThread serverThread = new ServerThread(socket); //启动线程 serverThread.start(); } }
主要还是那个关闭的问题。