传统 TCP server 有两种方式处理 blocking IO
1. 每个线程对应一个socket，很容易造成线程数目过多。
2. 建立线程池，循环使用线程，但是 每一次响应一个请求就要新建立 一个 socket，开销很大。

non-blocking IO 能让 一个 thread 处理多个client请求。