同步与异步,阻塞与非阻塞
- 同步:一个任务完成前不能做其他操作
- 异步:一个任务完成前,可以进行其他操作
- 阻塞:挂起当前线程,只等待,不能执行其他操作
- 非阻塞:执行其他操作
BIO
同步阻塞,一个连接一个线程,没处理完成之前不能做其他操作。模式简单,通信耗时
NIO
同步非阻塞,一个连接一个线程,客户端和服务器通过Channel通信,NIO在Channel进行读写操作,注册在Selector多路复用器上,通过一个线程不停轮询Channel执行IO操作
NIO和BIO
- 缓冲区
BIO直接写入Stream
NIO写入Buffer(缓冲区) - 通道
和流不同,通道是双向的,NIO可以通过通道同时进行读写操作 - 多路复用器
选择已就绪的通道
AIO
异步非阻塞,在NIO基础上引入异步通道。读写方法的返回类型都是Future对象,Furture模型是异步的。【去除主函数的等待时间】