不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2019-07-20 21:49  分类:Java  编辑

NIO2.0引入了新的异步通道的概念,并提供了异步文件通道和异步套接字通道的实现。异步通道提供两种方式获取获取操作结果。

  1. 通过java.util.concurrent.Future类来表示异步操作的结果;
  2. 在执行异步操作的时候传入一个java.nio.channels。
作者:php-note.com  发布于:2019-07-20 19:16  分类:Java  编辑

poll 函数的返回值是一个整数,得到了这个返回值以后,我们还是要逐个去检查,比如说,有一万个socket同时poll,返回值是3,我们还是只能去遍历这一万个socket,看看它们是否有IO动作。这就很低效了,于是,就有了epoll的改进,epoll可以直接通过“输出参数”(可以理解为C语言中的指针类型的参数),一个 epoll_event 数组,直接获得这三个socket,这就比较快了。

作者:php-note.com  发布于:2019-07-20 13:04  分类:Java  编辑

Channel是一个通道,可以通过它读取和写入数据,它就像自来水管一样,网络数据通过Channel读取和写入。通道与流的不同之处在于通道是双向的,流只是在一个方向上移动(一个流必须是InputStream或者OutputStream的子类),而且通道可以用于读、写或者同事用于读写。因为Channel是全双工的,所以它可以比流更好地映射底层操作系统的API。特别是在UNIX网络编程模型中,底层操作系统的通道都是全双工的,同时支持读写操作。