菜鸡学习netty源码(四)—— EventLoop

1.概述

我们前面进行过分析,channel为netty网络操作的抽象类,EventLoop负责处理注册到其上的Channel处理的I/O事件;EventLoopGroup是一个EventLoop的分组,它可以获取到一个或者多个的EventLoop对象。

2.类关系图

NioEventLoopGroup的类继承图,蓝色部分为对应的java类,绿色的部分就为一些接口的信息

3.EventExecutorGroup

io.netty.util.concurrent.EventExecutorGroup这个接口继承于ScheduledExecutorService, Iterable这两个接口。我们主要看下它进行自定义了哪些属于它自己的接口信息

 //是否已经停止 
 boolean isShuttingDown();

  //关闭
  Future<?> shutdownGracefully();
  Future<?> shutdownGracefully(long quietPeriod, long timeout, TimeUnit unit);

  // 获取一个 EventExecutor 对象
  EventExecutor next();

还有一点需要进行注意,就是返回值的Future需要进行注意不是进行返回的是java.util.concurrent.Future而是 io.netty.util.concurrent.Future

4.AbstractEventExecutorGroup

io.netty.util.concurrent.AbstractEventExecutorGroup实现EventExecutorGroup接口。

4.1 submit

提交一个普通任务到EventExecutor中。


    @Override
    public Future<?> submit(Runnable task) {
        return next().submit(task);
    }

    @Override
    public <T> Future<T> submit(Runnable task, T result) {
        return next().submit(task, result);
    }

    @Override
    public <T> Future<T> submit(Callable<T> task) {
        return next().submit(task);
    }

4.2 schedule

提交一个定时任务到 EventExecutor 中

    @Override
    public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) {
        return next().schedule(command, delay, unit);
    }

    @Override
    public <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) {
        return next().schedule(callable, delay, unit);
    }

相关推荐

  1. 学习netty(二)——BootStrap启动

    2024-05-05 02:30:04       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-05 02:30:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-05 02:30:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-05 02:30:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-05 02:30:04       18 阅读

热门阅读

  1. python学习笔记----函数进阶(七)

    2024-05-05 02:30:04       12 阅读
  2. MySQL数据库—初识数据库 | DDL语句 | DML语句

    2024-05-05 02:30:04       9 阅读
  3. 【SHADER】Shader实例学习2:Loading Wheel

    2024-05-05 02:30:04       7 阅读
  4. springboot学习基础入门

    2024-05-05 02:30:04       11 阅读
  5. 初识Flask

    2024-05-05 02:30:04       9 阅读