Netty主要用于高并发、异步事件驱动的网络框架,被广泛应用于实现高并发的网络服务中。今天注意讲述Netty中使用的线程模型,在java 5中引进了java.util.concurrent.Executor工具类,用于实现Thread复用。在这之前要实现多线程需要每次创建Thread,这样性能较低。

    Netty线程模型--EventLoop

    java.util.concurrent提供了Executors工具类用于提供Executor的实例;

 在Netty中,对java 5提供的Executor进行优化,Netty中的EventLoopGroup继承了java.util.concurrent.ScheduledExecutorService接口。Netty使用EventLoop用于出现每一个连接Channel生命周期中的事件和数据,而EventLoop是由EventLoopGroup中next()方法提供。因此在对比java.util.concurrent,EventLoopGroup相当于Executor,EventLoop相当于Executor中的线程。也的确是这样,每一个EventLoop都与Thread绑定在一起,用于处理注册在该EventLoop中的Channel生命周期中的事件和数据。

    任务调度,可以使用ScheduledExecutorService执行定时或者周期性任务,因为EventLoopGroup继承了ScheduledExecutorService,所以使用EventLoop也能够执行定时或者周期性任务。

相关文章: