Netty入门:EventLoop
-
早些年基于线程的网络模型,处理高并发的能力非常的差,随着请求数量的增多,必须不断新建线程,随之带来的问题就是服务器资源被占满、上下文切换成本过高以及IO阻塞导致的CPU浪费。
EventLoopGroup是一个接口,它继承自线程池EventExecutorGroup,并允许注册channel到自身所持有的EventLoop,同时支持按一定规则获取下一个EventLoop。
ScheduledExecutorService:是一个JDK接口,是一个能够支持延迟或定时任务的执行器,它的实现类ScheduledThreadPoolExecutor主要是利用了延时队列及设置下次执行时间来实现的。
EventExecutorGroup:是一个接口,Netty自定义了一个线程池,并且负责复用EventExecutor和执行任务。
EventLoopGroup:是一个核心接口,并且EventLoopGroup继承自EventExecutorGroup,代表它是一个线程池。同时它具备将channel注册到EventExecutorGroup的功能,也突出EventLoopGroup是一个能够真正处理Channel的特殊线程池。
EventLoop直译为事件循环,他的职责简单来说就是绑定一个唯一的线程,去执行或调度被分配的任务。可见一个EventLoop实例可以为多个channel服务,而为了最大化利用资源,Netty使用池化技术将EventLoop放入EventLoopGroup中管理。
西南地区IT社群(QQ)
- 云南
- 【昆明网页设计交流吧】243627302
- 【昆明nodejs交流吧】 243626749
- 【VUE】838405306
- 【云南程序员总群】343606807
- 【昆明UI设计】104031254
- 【云南软件外包】15547313
- 贵州
- 【PHP/java源码/站长交流群】55692114
- 四川
- 【成都Java/JavaWeb交流】86669225
- 【vaScript+PHP+MySql】116270060
- 【UI设计/设计交流学习群】135794928
- 重庆
- 【诺基亚 JAVA游戏博物馆】 559479780
- 【PHP,Java,Python,C++接单】 442103442
- 西藏