這個客戶端程序類似于傳統(tǒng)的IO客戶端程序,只是在36行設(shè)定為非阻塞,如果這里設(shè)置成true,那么和傳統(tǒng)的IO實現(xiàn)沒有什么很大的區(qū)別。不過,這個程序有一個很大的問題,由于在36行設(shè)置成非阻塞的IO,所在在讀的時候是不會阻塞的,那么在44行的while循環(huán)會不停的執(zhí)行,可以看到輸出很多“read a null string”。如果在這里不強制進行線程睡眠,CPU資源很快就耗盡。
改進的方法是使用Selector,下面是另外一個客戶端的實現(xiàn):