bio:大概是cpu和内存之间交互数据时,cpu读取数据时的方法,是同步阻塞方法。
nio:
aio:大概java1.7中,将aio称为nio2.0,它的读写方法都是异步非阻塞的。api大概在 java.nio.channels包中
一、只使用socket打开的输入流、输出流,不进行包装
处理每一个连接的数据,不一定都新建一个线程来进行处理,也可以用线程池优化
可以把服务端的socket实例,就是下面途中的accept对象,交给线程池处理。
疑问:下面的例子中,服务端从流中读取数据的方法,是同步阻塞方法,一个客户端对应一个输入流,再对应一个线程,这样简单有效,但是开启了太多线程
用线程池,该怎么设计呢?
使用线程池,大概就是池中哪个线程空闲,就用哪个,避免了新建太多线程。但是 inputStream.read(b)是阻塞方法,流中没有数据线程会阻塞,怎么会空闲呢?
大概不能用线程池优化bio,以后百度查一下。
NIO:监听新建连接,和BIO应该一样,但是处理接收、发送数据不一样,
nio会建一个线程池,大概用轮询的方式到缓存区中查找发送来的数据。
废弃 第一张图片中方法的修改2、优化?保证了一下输入流、输出流
网友评论