Netty: Netty中的組件

文章目錄

  • 一、EventLoop
    • 1、EventLoop
    • 2、EventLoopGroup
      • (1)處理普通時間和定時任務
      • (2)處理IO任務
  • 二、Channel
  • 三、Future&Promise
  • 四、Handler&Pipeline
  • 五、ByteBuf

一、EventLoop

1、EventLoop

EventLoop本質是一個單線程執行器(同時維護了一個Selector),里面有run方法處理Channel上源源不斷地IO事件。

它的繼承關系比較復雜:

  • 繼承自j.u.c.ScheduledExecutorService因此包含了線程池中所有的方法。
  • 另一條線是繼承自netty自己的OrderedEventExecutor。
package io.netty.channel;import io.netty.util.concurrent.OrderedEventExecutor;public interface EventLoop extends OrderedEventExecutor, EventLoopGroup {EventLoopGroup parent();
}

2、EventLoopGroup

EventLoopGroup是一組EventLoop,Channel一般會調用EventLoopGroup的register方法來綁定其中一個EventLoop,后續這個Channel上的IO事件都由此EventLoop來處理(保證了IO事件處理時的線程安全)。繼承自netty自己的EventLoopGroup:

  • 實現了Iterable接口提供遍歷EventLoop的能力。
  • 另外提供了next方法獲取集合中下一個EventLoop。

(1)處理普通時間和定時任務

package cn.itcast.netty.c3;import io.netty.channel.DefaultEventLoopGroup;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.util.NettyRuntime;
import lombok.extern.slf4j.Slf4j;import java.util.concurrent.TimeUnit;@Slf4j
public class TestEventLoop {public static void main(String[] args) {// 1. 創建事件循環組EventLoopGroup group = new NioEventLoopGroup(2); // io 事件,普通任務,定時任務
//        EventLoopGroup group = new DefaultEventLoopGroup(); // 普通任務,定時任務// 2. 獲取下一個事件循環對象System.out.println(group.next());System.out.println(group.next());System.out.println(group.next());System.out.println(group.next());// 3. 執行普通任務/*group.next().execute(() -> {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}log.debug("ok");});*/// 4. 執行定時任務group.next().scheduleAtFixedRate(() -> {log.debug("ok");}, 0, 1, TimeUnit.SECONDS);log.debug("main");}
}

(2)處理IO任務

二、Channel

三、Future&Promise

四、Handler&Pipeline

五、ByteBuf

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14521.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14521.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14521.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jetbrain | IDEA的啟動logo替換成可愛的vtuber-logo

看了這個,好可愛 【上Github熱榜了!當編程語言的Logo變得可愛起來~】 又看了這個 光速整活,強啊 看到很多人整IDEA的logo包括我自己,都不是特別方便的搞,我就直接把文件放在綁定資源里直接下吧 然后直接找到本體的安…

ios swift5 codable字典轉模型,第三方庫SmartCodable

文章目錄 1.用第三方庫SmartCodable, github地址2.使用示例 1.用第三方庫SmartCodable, github地址 SmartCodable - github 2.使用示例 import Foundation import SmartCodablestruct CommonModel: SmartCodable {var message: String ""var success: Bool fals…

【深度學習】與【PyTorch實戰】

目錄 一、深度學習基礎 1.1 神經網絡簡介 1.2 激活函數 1.3 損失函數 1.4 優化算法 二、PyTorch基礎 2.1 PyTorch簡介 2.2 張量操作 2.3 構建神經網絡 2.4訓練模型 2.5 模型評估 三、PyTorch實戰 3.1 數據加載與預處理 3.2 模型定義與訓練 3.3 模型評估與調優 3…

成都青年AI人才嶄露頭角,知了匯智科技助力孵化營大放異彩

5月18日-19日,為期兩天的成都國際商貿城青年(大學生)AI應用孵化營活動在熱烈的氛圍中圓滿落幕。本次活動由成都國際商貿城、成都成商數字科技有限公司、成都知了匯智科技有限公司及成都電商職教集團聯合舉辦,旨在為青年&#xff0…

丟失api-ms-win-crt-runtime-l1-1-0.dll的多種解決方法分析,教你簡單的一鍵修復

在使用Windows操作系統時,用戶可能會遇到一個涉及丟失 ?api-ms-win-crt-runtime-l1-1-0.dll文件的警告,這可能導致某些程序無法正常運行。該DLL文件屬于Microsoft Visual C Redistributable軟件包的一部分,這個軟件包為多個應用提供運行時支…

Mybatis-plus的兩種分頁方案

Mybatis-plus的兩種分頁方案 底層的邏輯是寫出最終執行的sql或者selectPage方法等,中間需要配置相應的page攔截器。 注意:如沒有配置攔截器,直接執行就會存在total的值為0,此方法無效。 1. 基于MP的IPage接口實現 使用步驟&am…

深度學習-Softmax回歸+損失函數+圖像分類數據集

目錄 Softmax回歸回歸 VS 分類Kaggle上的分類問題 從回歸到多類分類回歸分類從回歸到多類分類-均方損失從回歸到多類分類-無校驗比例從回歸到多類分類-校驗比例 Softmax和交叉熵損失總結損失函數均方損失絕對值損失函數魯棒損失 圖像分類數據集通過框架中內置函數將FashionMNIS…

RabbitMQ---交換機-Fanout-Direct

Publisher:生產者,不再發送消息到隊列中,而是發給交換機Exchange:交換機,一方面,接收生產者發送的消息。另一方面,知道如何處理消息,例如遞交給某個特別隊列、遞交給所有隊列、或是將…

刪除實例分割中的特定標簽

用labelme軟件對圖像進行實例分割或語義分割標注后會得到json文件,如果想要刪除某個特定標簽,可以使用如下代碼,完整代碼下載地址:代碼地址 import json import os# 要處理的json文件夾路徑 folder_path H:/json # 需要刪除的標…

如何一鍵生成多個文本二維碼?excel表格批量生碼的方法

現在很多人會將文本信息做成二維碼來展示,當有同類型內容生成大量二維碼時,可以使用將文本導入excel表格的方式,將表格中的每條數據批量生成二維碼,可以有效提升二維碼制作的速度和效率。下面就讓小編來將具體的操作步驟分享給大家…

LangChain API 2.0

轉載整理自:https://api.python.langchain.com/en/latest/langchain_api_reference.html 文章目錄 1、langchain.agentsClassesFunctions 2、langchain.callbacksClasses 3、langchain.chainsClassesFunctions 4、langchain.embeddingsClasses 5、langchain.evaluat…

二叉樹順序結構及鏈式結構

一.二叉樹的順序結構 1.定義:使用數組存儲數據,一般使用數組只適合表示完全二叉樹,此時不會有空間的浪費 注:二叉樹的順序存儲在邏輯上是一顆二叉樹,但是在物理上是一個數組,此時需要程序員自己想清楚調整…

http流式返回

HTTP流式返回(Stream)是一種服務器向客戶端傳輸數據的方式允許數據分塊發送而不是一次性發送完畢。 這樣客戶端可以在接收到第一部分數據時就開始處理,而不必等待整個響應完成。 應用場景: 2.1 業務場景:圖表的監聽&a…

手動安裝maven依賴到本地倉庫

使用mvn install命令安裝jar包到指定的倉庫。 命令如下: mvn install:install-file -Dmaven.repo.localC:\Users\liyong.m2\repository -DgroupIdcom.aspose -DartifactIdwords -Dversion18.4 -Dpackagingjar -DfileC:\Users\liyong\Desktop\jar\words-18.4.jar 解釋…

grafana + Prometheus + node-exporter + pushgateway + alertmanager的監控解決方案

業內比較著名的監控解決方案,據筆者所知,大概是三套: 一個是zabbix的解決方案,一個是prometheusgrafana,一個是ELK zabbix比較重,而且原生支持監控SNMP,自帶一個儀表盤,不需要額外…

docker redis 持久化

1、拉取redis鏡像 docker pull redis:latest 2、 mkdir /data/redis 3、填充redis.conf文件及根據需求修改相應的配置 ?通過官網地址找到對應版本的配置文件 ?將配置信息復制到redis.conf中 ?常見的修改配置 https://redis.io/docs/latest/operate/oss_and_stack/managem…

高仿果汁導航模板

參考原文:果汁導航風格模板_1234FCOM專注游戲工具及源碼例子分享 極速云

sdut pta 鏈表3(優化)-----7-3 sdut-C語言實驗-鏈表的結點插入

7-3 sdut-C語言實驗-鏈表的結點插入 分數 20 全屏瀏覽 切換布局 作者 馬新娟 單位 山東理工大學 給出一個只有頭指針的鏈表和 n 次操作,每次操作為在鏈表的第 m 個元素后面插入一個新元素x。若m 大于鏈表的元素總數則將x放在鏈表的最后。 輸入格式: 多組輸入。…

基于springboot的畢業設計系統的開發源碼

風定落花生,歌聲逐流水,大家好我是風歌,混跡在java圈的辛苦碼農。今天要和大家聊的是一款基于springboot的畢業設計系統的開發。項目源碼以及部署相關請聯系風歌,文末附上聯系信息 。 項目簡介: 畢業設計系統能夠實現…

學習通高分免費刷課實操教程

文章目錄 概要整體架構流程詳細步驟云上全平臺登錄步驟小結 概要 我之前提到過一個通過瀏覽器的三個腳本就可以免費高分刷課的文章,由于不方便拍視頻進行實操演示,然后寫下了這個實操教程,之前的三個腳本劃到文章末尾 整體架構流程 整體大…