什么是NIO

早上占坑


BIO:一个线程接受一个请求,然后一直接待到处理完这个请求后再接待下一个请求。

普通的设计模式就是这种BIO模式,它的问题在于一个线程接待请求的全部处理过程,这样请求中有需要等待的操作后,它会闲下来等待,这样让线程闲下来是一个资源浪费。可以通过过程优化提高吞吐量。

 NIO:将任务拆分为多个步骤,即将耗时处理的步骤和非耗时的任务分开,然后处理时每个线程不再负责接待请求的全部处理周期,而是只负责一个部分,这样负责非耗时处理的线程可以处理最大量的请求交给下一步的耗时线程,耗时线程又一直在处理耗时操作,这样就没有线程处于等待状态,也就没有资源的浪费,提高了吞吐量

异步:使用异步调用,可以大大地节省资源,因为异步调用后,线程不用等待耗时方法执行完毕,可以直接释放占用的cpu资源,等耗时方法执行完毕后回调的方式执行后续处理,这样不会让线程闲起来。

所以NIO+异步是提高吞吐量的利器。

尽管NIO+异步能提高系统吞吐量,但其并不能让一个请求的等待时间下降,相反可能会增加等待时间。

注意:此处与多线程的作用相同,多线程并不能让一个请求的等待时间下降,相反可能会增加等待时间,但多线程能大大提高吞吐量。大大提高吞吐量,大大提高吞吐量,大大提高吞吐量,重要的事情说三遍。(一直描述为多线程可以提高效率,其实不太直观,此处看到吞吐量三个字醍醐灌顶,字字珠玑。。。)

明天servlet

猜你喜欢

转载自www.cnblogs.com/lbzhu/p/10094729.html
NIO