美文网首页
Netty基础知识

Netty基础知识

作者: xbmchina | 来源:发表于2018-12-18 23:03 被阅读0次

阻塞与非阻塞

线程访问资源,该资源是否准备就绪的一种处理方式。

阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程

线程A --------> 处理中
线程B --------> 处理中

同步与异步

同步和异步是指访问数据的一种机制。
同步就是在发出一个请求时,在没有得到结果之前,该请求就不返回。但是一旦调用返回,就得到返回值了。
异步则是相反,请求在发出之后,这个请求就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,客户端不会立刻得到结果。而是在请求发出后,服务器通过状态、通知来通知请求者(客户端),或通过回调函数处理这个请求。

BIO

同步阻塞的IO,Block IO

最广泛的模型是阻塞I/O模型,默认情况下,所有套接口都是阻塞的。 进程调用recvfrom系统调用,整个过程是阻塞的,直到数据复制到进程缓冲区时才返回(当然,系统调用被中断也会返回)。

NIO

同步非阻塞IO, New IO (Non-Block IO)

当我们把一个套接口设置为非阻塞时,就是在告诉内核,当请求的I/O操作无法完成时,不要将进程睡眠,而是返回一个错误。当数据没有准备好时,内核立即返回EWOULDBLOCK错误,第四次调用系统调用时,数据已经存在,这时将数据复制到进程缓冲区中。这其中有一个操作时轮询(polling)。

AIO

异步非阻塞IO

进程发起read操作之后,立刻就可以开始去做其它的事。而另一方面,从kernel的角度,当它受到一个asynchronous read之后,首先它会立刻返回,所以不会对用户进程产生任何block。然后,kernel会等待数据准备完成,然后将数据拷贝到用户内存,当这一切都完成之后,kernel会给用户进程发送一个signal,告诉它read操作完成了。

这个模型工作机制是:告诉内核启动某个操作,并让内核在整个操作(包括第二阶段,即将数据从内核拷贝到进程缓冲区中)完成后通知我们。

Reactor线程模型

主从线程模型:一组线程池接受请求,一组线程池处理io

image.png

可参考这篇文章

通俗地讲:

  • BIO:去上厕所,坑全满,此时你一直光等着,主动观察哪个坑位好了,只要有坑位释放了,你就立马去占坑。
  • NIO: 厕所坑全满,此时你跑过去抽烟或者做别的事,然后时不时再主动的去厕所看有没有坑释放,如果有坑了自己去占。
  • AIO:你在厕所外抽烟玩手机,等有人好了之后来通知你去占坑。

常见面试

  • BIO,NIO,AIO的区别是什么?
    可参考这篇文章

参考链接

相关文章

  • 第5讲 文件传输

    本章主要内容: 文件的基础知识 Netty文件传输开发 5.1 文件基础知识 Java NIO中的FileChan...

  • Netty浅析 - 2. 实现

    前言 本篇文章主要分析Netty的系统结构以及其如何实现其对外宣称的特色,如果还未了解Netty的基础知识,最好先...

  • Netty基础知识之NIO

    Netty基础知识之NIO Netty是一款提供异步的、事件驱动的网络应用程序框架和工具,是基于NIO客户端、服务...

  • Netty Server端实现

    基于前几篇文章,我们对于学习Netty源码已经做好了相应的基础知识储备,今天我们会使用Netty实现一个简单的Se...

  • Netty基础知识

    阻塞与非阻塞 线程访问资源,该资源是否准备就绪的一种处理方式。 阻塞调用是指调用结果返回之前,当前线程会被挂起。调...

  • Netty源码解析——Buffer之ByteBuf 内存泄漏检测

    Netty源码解析——Buffer之ByteBuf 内存泄漏检测 0.引用计数器基础知识 1) 计数器基于Atom...

  • Netty源码之ByteBuf(二)

    引言 在上一篇文章Netty源码之ByteBuf(一)中我们简单介绍了ByteBuf的基础知识并根据源码分析了By...

  • Netty系列(1)---基础知识

    https://www.cnblogs.com/imstudy/p/9908791.html (核心参考)http...

  • Netty 源码解析(五): Netty 的线程池分析

    Netty 源码解析(一): 开始 Netty 源码解析(二): Netty 的 Channel Netty 源码...

  • Netty系列之源码解析(一)

    Netty源码解析(一):开始 当前:Netty 源码解析(二): Netty 的 Channel Netty 源...

网友评论

      本文标题:Netty基础知识

      本文链接:https://www.haomeiwen.com/subject/yxlhfqtx.html