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

本文深入探讨了Netty中的EventLoopGroup,包括它的作用、类关系图、EventExecutorGroup接口、AbstractEventExecutorGroup的submit和schedule方法,以及MultithreadEventExecutorGroup的构造方法和线程选择策略。同时,详细分析了EventLoopGroup和MultithreadEventLoopGroup的初始化和构造过程。
摘要由CSDN通过智能技术生成

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);
    }

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

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

4.3 shutdown

 @Override
    public Future<?> shutdownGracefully() {
        return shutdownGracefully(DEFAULT_SHUTDOWN_QUIET_PERIOD, DEFAULT_SHUTDOWN_TIMEOUT, TimeUnit.SECONDS);
    }

    /**
     * @deprecated {@link #shutdownGracefully(long, long, TimeUnit)} or {@link #shutdownGracefully()} i
  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小园子的小菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值