zoukankan      html  css  js  c++  java
  • Netty的基本概念

    异步

    等待它的同时你也可以做点别的事情

    阻塞I/O

    只能同时处理一个连接,要管理多个并发客户端,需要为每个新的客户端Socket创建一个新的Thread

    使用Selector的非阻塞I/O

    class java.nio.channels.Selector是Java的非阻塞I/O实现的关键。它使用了事件通知API以确定在一组非阻塞套接字中有哪些已经就绪能够进行I/O相关的操作。因为可以在任何的时间检查任意的读操作或者写操作的完成状态,一个单一的线程便可以处理多个并发的连接。

    Channel

    Channel 是 Java NIO 的一个基本构造。
    它代表一个到实体(如一个硬件设备、一个文件、一个网络套接字或者一个能够执
    行一个或者多个不同的I/O操作的程序组件)的开放连接,如读操作和写操作

    目前,可以把 Channel 看作是传入(入站)或者传出(出站)数据的载体。因此,它可以 被打开或者被关闭,连接或者断开连接。

    Future

    Future提供了另一种在操作完成时通知应用程序的方式。这个对象可以看作是一个异步操 作的结果的占位符;它将在未来的某个时刻完成,并提供对其结果的访问。
    ChannelFuture提供了几种额外的方法,这些方法使得我们能够注册一个或者多个 ChannelFutureListener实例。监听器的回调方法operationComplete(),将会在对应的 操作完成时被调用。
    简而言之,由ChannelFutureListener提供的通知机制消除 了手动检查对应的操作是否完成的必要。
    每个 Netty 的出站 I/O 操作都将返回一个 ChannelFuture;也就是说,它们都不会阻塞。 正如我们前面所提到过的一样,Netty 完全是异步和事件驱动的。

    pipeline

    Each channel has its own pipeline and it is created automatically when a new channel is created.

    Channel的注冊

    在 Netty 中, 每个 Channel 都会关联一个特定的 EventLoop, 并且这个 Channel 中的所有 IO 操作都是在这个 EventLoop 中执行的;

    bossGroup

    bossGroup 是用于服务端 的 accept 的, 即用于处理客户端的连接请求

    workerGroup

    workerGroup 负责客户端连接通道的 IO 操作

  • 相关阅读:
    Matlab n阶矩阵行、列互换
    IfcGeographicElement
    集合系列 Set(七):LinkedHashSet
    集合系列 Set(六):HashSet
    集合系列 List(五):Stack
    集合系列 List(四):LinkedList
    集合系列 List(三):Vector
    集合系列 List(二):ArrayList
    集合系列(一):集合框架概述
    集合系列开篇:为什么要学集合?
  • 原文地址:https://www.cnblogs.com/bihanghang/p/10172325.html
Copyright © 2011-2022 走看看