BIO、NIO、AIO 个人总结
BIO(blocking io) BIO即为阻塞IO,在网络编程中,它会在建立连接和等待连接的对端准备数据阶段进行阻塞。因此为了支撑高并发的用户访问,一般会为每一个socket 连接分配一个线程。但使用的瓶颈更加明显,无法支持上百万、甚至千万以上的并发。且线程切换带来的开销也更大。 代码示例: Server端 Server 端绑定 8082 端口 通过 accept() 方法 阻塞等待客户端建立连接 当与客户端建立一个 socket 连接通道之后,server 端口将新建一个线程进行 【读】 、【写】 ( ps: 这里的读是阻塞的,因为当server端发起读的请求时, 如果此时对端未准备好数据,那么将一直阻塞等待 。 直到:1. 对端通过 socket 发送数据2. 将数据从内核态 拷贝到用户态 ) try { // 绑定本地 8082 端口 ServerSocket server = new ServerSocket(8082); while (true) { //阻塞等待客户端 socket 建立连接 Socket accept = server.accept(); Thread t = new Thread(new Runnable() { @Override public void run() { // 一个线程处理一个socket 连接 BufferedReader