这个客户端程序类似于传统的IO客户端程序,只是在36行设定为非阻塞,如果这里设置成true,那么和传统的IO实现没有什么很大的区别。不过,这个程序有一个很大的问题,由于在36行设置成非阻塞的IO,所在在读的时候是不会阻塞的,那么在44行的while循环会不停的执行,可以看到输出很多“read a null string”。如果在这里不强制进行线程睡眠,CPU资源很快就耗尽。
改进的方法是使用Selector,下面是另外一个客户端的实现: