IO操作:网络IO、文件IO、数据库IO等;
非IO操作:纯计算、内存处理等。
BIO,阻塞式IO,痛点:线程碰到IO操作时,需阻塞等待操作完成,才能执行后续流程。
NIO,非阻塞IO,解决痛点:把原本阻塞等待IO操作完成的时间,用来执行其他非IO任务(Eg:处理已就绪数据、计算逻辑)。
NIO 特点说明
- 线程基于事件监听机制(selector 对 多个channel事件的监听),主动管理 “就绪事件”;
- 调度原则:按照就绪事件到达的先后顺序,依次放入就绪集合中,然后依次被线程依次处理;
- 如果任务中没有IO操作,在NIO模型中,线程直接同步执行完;
- NIO 模式下,新任务到来是否直接放入就绪队列,取决于任务类型:
IO任务:关联 channel;
非IO任务:不经过 selector 就绪队列,线程直接处理。 - NIO 和 线程的关系:NIO 是IO操作的组织方式,线程是执行这种方式的载体。