1) IO 流 和 NIO 块的区别
标准IO和NIO在数据打包和传输方式有所区别,标准IO以流的方式处理数据,NIO以块的方式处理数据
2) 同步和异步
Java 标准IO流是线程堵塞和同步的,也就是说如果一个线程调用了read()或write()方法,这个线程在读写操作执行完毕前都是堵塞的。
3) 标准IO和NIO的 API不同
在NIO里面,数据不是一个字节一个自己的读取的,而是首先被读入到一个buffer里面,然后再被处理
NIO允许你在同一个线程里面管理多个渠道,但是数据转换和处理会比标准IO复杂和更消耗资源一些。
如果你需要管理数千个并发的连接,每一个连接只发送较少的数据(比如聊天服务器), 使用NIO来实现会比较有优势。
如果你需要同时保持很多到其他服务器的连接,比如P2P网络,使用单线程来管理所有的出口连接会比较有优势。
如果你有较少的连接但是需要发送大量数据、占用大量贷款,用标准IO来实现会比较合适。