I/O流数据源包括,字节数组,string对象,文件,“管道”,流组成的序列,其它数据源(Internet连接等)
字节流:处理数据的基本单位是单个字节,用来处理二进制数据;默认不使用缓冲区
字符流:处理数据的基本单位是Unicode码元(大小2字节),用来处理文本数据;使用缓冲区
输入流(InputStream):从文件读取数据,是一个获取数据的过程
输出流(OutputStream):将数据写入到文件,是推送数据的过程
同步,异步:任务A调用任务B的过程中,若A等待B的结果,则为同步;若A不等待B的结果,则为异步
同步状态下任务A的执行时依赖于任务B的,任务A成功是依赖于成功B的。而异步模式下两者是不相关的。
阻塞和非阻塞:任务A等待B的结果的过程中,若A等待的过程中会被挂起,则为阻塞;若A等待的过程中不会挂起,则为非阻塞
同步阻塞的情况下,任务A会挂起,同步非阻塞的情况下任务A并不挂起。不挂起的情况下任务A保留有响应信号的能力;
非阻塞的情况下并不会导致线程切换(只是不强制进行线程切换,如果该线程的时间片用完还是会切换的),可能效率更高,cpu利用率也更高
5种IO模型
阻塞式IO
非阻塞式IO
IO复用模型
信号驱动IO
异步IO
netty