在linux或者java层面存在NIO饿概念,请问如果从磁盘IO模型层面如何来理解NIO呢?
你说的java层面的NIO,是与BIO、AIO对应的概念
BIO,同步阻塞式IO,一个连接对应一个线程
NIO,同步非阻塞IO,一个请求有一个线程处理,但多个请求可以由一个线程处理。
同步式的IO,应用的线程做read write这样的操作,需要等操作系统(OS是应用和底层硬件的中介)完成之后,才能返回。
AIO,异步非阻塞IO,一个有效请求一个线程,多个请求可以由一个线程处理,IO不需要阻塞式的等待,而是有操作系统做完了read write这样的操作后通知应用“我已经做完了”。在此期间,应用可以去干别的事情,增强了处理效率,可以充分利用CPU资源。
操作系统层面一般提的是AIO,默认也都是AIO的模式。
收起