BIO、NIO

网络通信基本常识

什么是socket?

socket 是应用层与 TCP/P 协议族通信的中间软件抽象层,它是一组接口,主机A 的应用程序要能和主机B 的应用程序通信,必须通过 Socket 建立连接。

短连接

SOCKET 连接发送完数据后马上断开连接

长连接

建立 SOCKET 连接后不管是否使用都保持连接

BIO

阻塞的 I/O

①若一个服务器启动就绪,那么主线程就一直在等待着客户端的连接,这个等待过程中
主线程就一直在阻塞。
②在连接建立之后,在读取到 socket 信息之前,线程也是一直在等待,一直处于阻塞
的状态下的。

NIO

非阻塞读,使一个线程从channel发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,该线程可以继续做其他的事情。

非阻塞写,一个线程请求写入一些数据到channel,但不需要等待它完全写入,这个线程同时可以去做别的事情。

线程通常将非阻塞 IO 的空闲时间用于在其它通道上执行 IO 操作,所以一个单独的线程可以管理多个输入和输出通道(channel)。

你可能感兴趣的:(java)