Netty入门学习(四):EventLoopGroup和NioEventLoopGroup的继承体系

本文深入探讨了Netty中核心组件EventLoopGroup和NioEventLoopGroup与JDK并发包之间的关联,解释了它们如何通过继承体系与JDK的线程管理类Executor建立联系,以及Netty如何利用这些组件实现高效的网络IO操作。
背景
  1. 对于Netty的使用,都会使用bossGroup和workerGroup的方式,而常说的bossGroup和workerGroup其实是NioEventLoopGroup的实例。
  2. 在Netty中,EventLoopGroup和NioEventLoopGroup其实就是一个线程池。

EventLoopGroup和NioEventLoopGroup的继承体系

在这里插入图片描述

  1. Netty中的EventLoopGroup接口直接继承JDK中的EventExecutorGroup接口。
  2. Netty中的NioEventLoopGroup是继承了MultithreadEventLoopGroup抽象类,而MultithreadEventLoopGroup继承MultithreadEventExecutorGroup抽象类。MultithreadEventExecutorGroup抽象类实现了Netty中的EventLoopGroup接口。由此,就可以明白Netty中的类是怎样跟JDK的并发包下面的类关联上关系的。

JDK的Executor的简单用法
public class DemoTask implements Runnable {

    @Override
    public void run() {
        System.out.println("Demo task will run here.");
    }

    static class Worker {
        ExecutorService executorService = Executors.newSingleThreadExecutor();

        public Future execute(Runnable runnable) {
            return executorService.submit(runnable);
        }

    }

    public static void main(String[] args) {
        Worker worker = new Worker();
        worker.execute(new DemoTask());

        worker.execute(() -> {
            System.out.println("----------This is an lambda work------");
            DemoTask dt = new DemoTask();
            dt.run();
        });
    }
}
  1. JDK中是推荐使用Runnable实现多线程逻辑,而这个Runnable实现多线程逻辑,最好是配合Executor来实现。
  2. Executor可以把业务逻辑和线程本身管理给分离开来。也就是说,线程本身的管理工作交给Executor来进行,而线程本身只需要关心它自己的任务(业务逻辑过程)。

小结
  1. Netty中一个核心接口EventLoopGroup是怎么跟JDK并发包下面类进行关联上关系的。
  2. Netty中一个核心类NioEventLoopGroup是怎么跟JDK并发包下面类进行关联上关系的。
  3. Executor是线程池管理类,它把线程本身和线程需要执行的任务隔离开来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值