基本IO模型4种:
同步阻塞IO模型:用户进程在发起一个IO操作后,等待IO操作的完成,只有当真正完成IO操作之后,用户进程才能运行。
同步非阻塞IO模型:用户进程在发起一个IO操作后即可返回做其他的,但用户进程需要不断询问IO操作是否就绪。要求用户进程不停地询问,引入了不必要的CPU资源浪费。
异步阻塞IO模型:应用发起一个IO操作之后,不等待内核IO操作完成,等内核完成IO操作之后会通知应用程序,此时通过select系统调用完成,select系统函数本身是阻塞的。使用select函数的一个好处是可以同时监听多个文件句柄,从而提高系统的并发性。
异步非阻塞IO模型:用户只需要发起一个IO操作,然后立即返回。等IO操作真正完成之后,应用会收到IO操作完成的通知。此时用户进程只需要对数据进行处理就可以了,不需要进行实际的IO操作,因为内核已经完成了真正的IO读写操作。
Java传统IO模型就属于同步阻塞IO模型,Java NIO模型属于同步非阻塞IO模型。
不知道为什么搜基本IO模型的时候找到好多资料都是关于Unix系统或者Linux系统的网络编程的。