
上QQ阅读APP看书,第一时间看更新
2.3 BIO
BIO是最传统的同步阻塞IO模型,服务器端的实现是一个连接只有一个线程处理,线程在发起请求后,会等待连接返回。
常见的同步阻塞IO访问代码如下所示:

对于每个线程而言,它们内部的实现都使用了阻塞的调用方式,核心的代码如下所示:


从上面的代码可以看出,这个线程大部分的时间可能都是在等待read方法返回。正是由于这个读数据的方法是阻塞调用的,因此每个线程只能处理一个连接。如果请求量非常大,那么这种方式就需要创建大量的线程。而系统的资源都是有限的,可能允许创建最大的线程数远远小于要处理的连接数,而且就算线程能被创建出来,大量的线程也会降低系统的性能。