一、基本概念
1.BIO:同步阻塞IO
2.NIO:同步非阻塞IO
3.AIO:异步阻塞IO
IO操作包括两部分,发起IO请求、IO数据读写。阻塞非阻塞主要针对线程发起IO请求之后是否立即返回来定义的,立即返回成为称为非阻塞IO,否则为阻塞IO。同步异步针对IO数据读写来定义的,不阻塞线程称为异步IO,否则为同步IO。
BIO工作原理:线程发起IO请求之后,一直阻塞,直到数据就绪后将数据写入socket空间或从socket空间读取数据。
NIO工作原理:线程发起IO请求后,立即返回,但需定时轮询去检查数据是够就绪,就绪后才将数据写入socket空间或从socket空间读取数据。
IO多路复用(NIO):上述NIO实现中,需要用户线程定时轮训,去检查IO数据是否就绪,占用应用程序线程资源。IO多路复用模型中,将检查IO数据是否就绪的任务,交给系统级别的select或模型,由系统进行监控,减轻用户线程负担。
AIO工作原理:线程发起IO请求后立即返回,当数据读写完成后OS通知用户线程。这里对socket空间数据的读写都是由OS完成的。
参考链接: