日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

面試官:說說延遲任務(wù)的時(shí)間輪調(diào)度算法?

來源: 責(zé)編: 時(shí)間:2024-06-05 17:42:22 225觀看
導(dǎo)讀本文繼續(xù)討論 Netty 相關(guān)的面試題,今天咱們來看一道 Netty 中的高頻面試題:說說 Netty 延遲任務(wù)的時(shí)間輪調(diào)度算法?Netty 框架是以性能著稱的框架,因此在它的框架中使用了大量提升性能的機(jī)制,例如 Netty 用于實(shí)現(xiàn)延遲隊(duì)列的

sK828資訊網(wǎng)——每日最新資訊28at.com

本文繼續(xù)討論 Netty 相關(guān)的面試題,今天咱們來看一道 Netty 中的高頻面試題:說說 Netty 延遲任務(wù)的時(shí)間輪調(diào)度算法?sK828資訊網(wǎng)——每日最新資訊28at.com

Netty 框架是以性能著稱的框架,因此在它的框架中使用了大量提升性能的機(jī)制,例如 Netty 用于實(shí)現(xiàn)延遲隊(duì)列的時(shí)間輪調(diào)度算法就是一個(gè)典型的例子。使用時(shí)間輪算法可以實(shí)現(xiàn)海量任務(wù)新增和取消任務(wù)的時(shí)間度為 O(1),那么什么是時(shí)間輪調(diào)度算法呢?接下來我們一起來看。sK828資訊網(wǎng)——每日最新資訊28at.com

1.延遲任務(wù)實(shí)現(xiàn)

在 Netty 中,我們需要使用 HashedWheelTimer 類來實(shí)現(xiàn)延遲任務(wù),例如以下代碼:sK828資訊網(wǎng)——每日最新資訊28at.com

public class DelayTaskExample {    public static void main(String[] args) {        System.out.println("程序啟動(dòng)時(shí)間:" + LocalDateTime.now());        NettyTask();    }    private static void NettyTask() {        // 創(chuàng)建延遲任務(wù)實(shí)例        HashedWheelTimer timer = new HashedWheelTimer(3, // 間隔時(shí)間                TimeUnit.SECONDS, // 間隔時(shí)間單位                100); // 時(shí)間輪中的槽數(shù)        // 創(chuàng)建任務(wù)        TimerTask task = new TimerTask() {            @Override            public void run(Timeout timeout) throws Exception {                System.out.println("執(zhí)行任務(wù)時(shí)間:" + LocalDateTime.now());            }        };        // 將任務(wù)添加到延遲隊(duì)列中        timer.newTimeout(task, 0, TimeUnit.SECONDS);    }}

以上程序的執(zhí)行結(jié)果如下:sK828資訊網(wǎng)——每日最新資訊28at.com

程序啟動(dòng)時(shí)間:2024-06-04T10:16:23.033sK828資訊網(wǎng)——每日最新資訊28at.com

執(zhí)行任務(wù)時(shí)間:2024-06-04T10:16:26.118sK828資訊網(wǎng)——每日最新資訊28at.com

從上述執(zhí)行結(jié)果可以看出,我們使用 HashedWheelTimer 實(shí)現(xiàn)了延遲任務(wù)的執(zhí)行。sK828資訊網(wǎng)——每日最新資訊28at.com

2.時(shí)間輪調(diào)度算法

那么問題來了,HashedWheelTimer 是如何實(shí)現(xiàn)延遲任務(wù)的?什么是時(shí)間輪調(diào)度算法?sK828資訊網(wǎng)——每日最新資訊28at.com

查看 HashedWheelTimer 類的源碼會(huì)發(fā)現(xiàn),其實(shí)它是底層是通過時(shí)間輪調(diào)度算法來實(shí)現(xiàn)的,以下是 HashedWheelTimer 核心實(shí)現(xiàn)源碼(HashedWheelTimer 的創(chuàng)建源碼)如下:sK828資訊網(wǎng)——每日最新資訊28at.com

private static HashedWheelBucket[] createWheel(int ticksPerWheel) {    // 省略其他代碼    ticksPerWheel = normalizeTicksPerWheel(ticksPerWheel);    HashedWheelBucket[] wheel = new HashedWheelBucket[ticksPerWheel];    for (int i = 0; i < wheel.length; i ++) {        wheel[i] = new HashedWheelBucket();    }    return wheel;}private static int normalizeTicksPerWheel(int ticksPerWheel) {    int normalizedTicksPerWheel = 1;    while (normalizedTicksPerWheel < ticksPerWheel) {        normalizedTicksPerWheel <<= 1;    }    return normalizedTicksPerWheel;}private static final class HashedWheelBucket {    private HashedWheelTimeout head;    private HashedWheelTimeout tail;    // 省略其他代碼}

在 HashedWheelTimer  中,使用了 HashedWheelBucket 數(shù)組實(shí)現(xiàn)時(shí)間輪的概念,每個(gè) HashedWheelBucket 表示時(shí)間輪中一個(gè) slot(時(shí)間槽),HashedWheelBucket 內(nèi)部是一個(gè)雙向鏈表結(jié)構(gòu),雙向鏈表的每個(gè)節(jié)點(diǎn)持有一個(gè) HashedWheelTimeout 對象,HashedWheelTimeout 代表一個(gè)定時(shí)任務(wù),每個(gè) HashedWheelBucket 都包含雙向鏈表 head 和 tail 兩個(gè) HashedWheelTimeout 節(jié)點(diǎn),這樣就可以實(shí)現(xiàn)不同方向進(jìn)行鏈表遍歷,如下圖所示:sK828資訊網(wǎng)——每日最新資訊28at.com

sK828資訊網(wǎng)——每日最新資訊28at.com

時(shí)間輪算法的設(shè)計(jì)思想就來源于鐘表,如上圖所示,時(shí)間輪可以理解為一種環(huán)形結(jié)構(gòu),像鐘表一樣被分為多個(gè) slot 槽位。每個(gè) slot 代表一個(gè)時(shí)間段,每個(gè) slot 中可以存放多個(gè)任務(wù),使用的是鏈表結(jié)構(gòu)保存該時(shí)間段到期的所有任務(wù)。時(shí)間輪通過一個(gè)時(shí)針隨著時(shí)間一個(gè)個(gè) slot 轉(zhuǎn)動(dòng),并執(zhí)行 slot 中的所有到期任務(wù)。sK828資訊網(wǎng)——每日最新資訊28at.com

任務(wù)的添加是根據(jù)任務(wù)的到期時(shí)間進(jìn)行取模,然后將任務(wù)分布到不同的 slot 中。如上圖所示,時(shí)間輪被劃分為 8 個(gè) slot,每個(gè) slot 代表 1s,當(dāng)前時(shí)針指向 2 時(shí),假如現(xiàn)在需要調(diào)度一個(gè) 3s 后執(zhí)行的任務(wù),應(yīng)該加入 2+3=5 的 slot 中;如果需要調(diào)度一個(gè) 12s 以后的任務(wù),需要等待時(shí)針完整走完一圈 round 零 4 個(gè) slot,需要放入第 (2+12)%8=6 個(gè) slot。sK828資訊網(wǎng)——每日最新資訊28at.com

那么當(dāng)時(shí)針走到第 6 個(gè) slot 時(shí),怎么區(qū)分每個(gè)任務(wù)是否需要立即執(zhí)行,還是需要等待下一圈 round,甚至更久時(shí)間之后執(zhí)行呢?所以我們需要把 round 信息保存在任務(wù)中。例如圖中第 6 個(gè) slot 的鏈表中包含 3 個(gè)任務(wù),第一個(gè)任務(wù) round=0,需要立即執(zhí)行;第二個(gè)任務(wù) round=1,需要等待 1*8=8s 后執(zhí)行;第三個(gè)任務(wù) round=2,需要等待 2×8=8s 后執(zhí)行。所以當(dāng)時(shí)針轉(zhuǎn)動(dòng)到對應(yīng) slot 時(shí),只執(zhí)行 round=0 的任務(wù),slot 中其余任務(wù)的 round 應(yīng)當(dāng)減 1,等待下一個(gè) round 之后執(zhí)行。sK828資訊網(wǎng)——每日最新資訊28at.com

可以看出時(shí)間輪有點(diǎn)類似 HashMap,如果多個(gè)任務(wù)如果對應(yīng)同一個(gè) slot,處理沖突的方法采用的是拉鏈法。在任務(wù)數(shù)量比較多的場景下,適當(dāng)增加時(shí)間輪的 slot 數(shù)量,可以減少時(shí)針轉(zhuǎn)動(dòng)時(shí)遍歷的任務(wù)個(gè)數(shù)。sK828資訊網(wǎng)——每日最新資訊28at.com

時(shí)間輪定時(shí)器最大的優(yōu)勢就是,任務(wù)的新增和取消都是 O(1) 時(shí)間復(fù)雜度,而且只需要一個(gè)線程就可以驅(qū)動(dòng)時(shí)間輪進(jìn)行工作。sK828資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-92120-0.html面試官:說說延遲任務(wù)的時(shí)間輪調(diào)度算法?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 利用Spring Boot和Elasticsearch進(jìn)行人臉數(shù)據(jù)的高效檢索

下一篇: 微服務(wù)下認(rèn)證授權(quán)框架的探討

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 小米降噪藍(lán)牙耳機(jī)Necklace分享:聽一首歌 讀懂一個(gè)故事

    在今天下午的小米Civi 2新品發(fā)布會(huì)上,小米還帶來了一款新的降噪藍(lán)牙耳機(jī)Necklace,我們也在發(fā)布結(jié)束的第一時(shí)間給大家?guī)磉@款耳機(jī)的簡單分享。現(xiàn)在大家能見到最多的藍(lán)牙耳機(jī)
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保
  • 之家push系統(tǒng)迭代之路

    前言在這個(gè)信息爆炸的互聯(lián)網(wǎng)時(shí)代,能夠及時(shí)準(zhǔn)確獲取信息是當(dāng)今社會(huì)要解決的關(guān)鍵問題之一。隨著之家用戶體量和內(nèi)容規(guī)模的不斷增大,傳統(tǒng)的靠"主動(dòng)拉"獲取信息的方式已不能滿足用
  • 這款新興工具平臺(tái),讓你的電腦效率翻倍

    隨著信息技術(shù)的發(fā)展,我們獲取信息的渠道越來越多,但是處理信息的效率卻成為一個(gè)瓶頸。于是各種工具應(yīng)運(yùn)而生,都在爭相解決我們的工作效率問題。今天我要給大家介紹一款效率
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運(yùn)營研究社作者 | 張知白編輯 | 楊佩汶設(shè)計(jì) | 晏談夢潔這個(gè)暑期,旅游賽道徹底火了:有的「地方」火了&mdash;&mdash;貴州村超旅游收入 1 個(gè)月超過 12 億;有的「博主」火了&m
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨(dú)家獲悉,拼多多在其APP內(nèi)上線了&ldquo;本地生活&rdquo;入口,位置較深,位于首頁的&ldquo;充值中心&rdquo;內(nèi),目前主要售賣美食相關(guān)的
  • 蘋果140W USB-C充電器:采用氮化鎵技術(shù)

    據(jù)10 月 30 日 9to5 Mac 消息報(bào)道,當(dāng)蘋果推出新的 MacBook Pro 2021 時(shí),該公司還推出了新的 140W USB-C 充電器,附贈(zèng)在 MacBook Pro 16 英寸機(jī)型的盒子里,也支
  • 利用職權(quán)私自解除被封帳號(hào) Meta開除20多名員工

    11月18日消息,據(jù)外媒援引知情人士表示,過去一年時(shí)間內(nèi),F(xiàn)acebook母公司Meta解雇或處罰了20多名員工以及合同工,指控這些人通過內(nèi)部系統(tǒng)以不當(dāng)方式重置用戶帳號(hào),其
  • 中關(guān)村論壇11月25日開幕,15位諾獎(jiǎng)級大咖將發(fā)表演講

    11月18日,記者從2022中關(guān)村論壇新聞發(fā)布會(huì)上獲悉,中關(guān)村論壇將于11月25至30日在京舉行。本屆中關(guān)村論壇由科學(xué)技術(shù)部、國家發(fā)展改革委、工業(yè)和信息化部、國務(wù)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
99国产精品久久久久久久成人热| 国产主播一区| 欧美~级网站不卡| 免费成人小视频| 欧美激情综合网| 国产精品家教| 国产一区二区三区黄视频| 影音先锋日韩精品| 亚洲精选久久| 亚洲欧美在线磁力| 久久久噜噜噜久久中文字幕色伊伊| 免费中文字幕日韩欧美| 欧美激情一二区| 国产精品免费看| 精品粉嫩aⅴ一区二区三区四区| 亚洲区中文字幕| 亚洲一区二区久久| 久久久久久免费| 欧美另类高清视频在线| 国产日产欧产精品推荐色| 激情综合亚洲| 亚洲午夜久久久| 久久综合九色综合欧美就去吻| 欧美日韩国产首页| 国内精品久久久| 夜夜精品视频一区二区| 久久精品99久久香蕉国产色戒| 欧美日韩p片| 韩国在线一区| 亚洲午夜精品| 欧美成人黄色小视频| 国产精品一二三四区| 亚洲人成高清| 久久精品99国产精品日本 | 久久久www免费人成黑人精品| 欧美精品18+| 国产亚洲欧美另类一区二区三区| 亚洲精品影院| 久久久久久穴| 国产精品亚洲一区二区三区在线| 亚洲精品一区二区三区不| 久久精品夜色噜噜亚洲a∨ | 亚洲激情午夜| 久久精品国产精品亚洲| 欧美日韩中文在线观看| 1024国产精品| 欧美一级电影久久| 欧美视频第二页| 亚洲精品影视| 欧美a级片网站| 一区二区视频免费在线观看| 亚洲欧美日韩精品在线| 欧美日韩免费观看一区三区 | 欧美日本高清| 亚洲第一色中文字幕| 欧美主播一区二区三区| 国产精品久久久久久久9999 | 久久久一区二区三区| 国产精品视频久久| 日韩一二三区视频| 欧美成人一区二区在线 | 亚洲一区视频在线观看视频| 欧美理论电影在线观看| 亚洲电影欧美电影有声小说| 欧美淫片网站| 国产精品揄拍500视频| 亚洲一区二区成人| 欧美日韩中文字幕在线| 亚洲精一区二区三区| 欧美成人四级电影| 亚洲第一中文字幕| 久久久久久婷| 狠狠综合久久| 久久久久九九九九| 国产一区二区在线免费观看| 欧美一级理论性理论a| 国产精品国产三级国产专播精品人| 日韩亚洲欧美中文三级| 欧美精品尤物在线| 亚洲精品久久久久久久久久久久| 久久天堂成人| 狠狠色伊人亚洲综合网站色| 久久精品噜噜噜成人av农村| 国产亚洲日本欧美韩国| 欧美在线观看视频| 国产视频精品xxxx| 欧美在线观看视频在线| 国产午夜精品一区理论片飘花 | 日韩亚洲欧美精品| 欧美日韩免费看| 国产精品99久久不卡二区| 欧美视频在线观看免费网址| 国产精品99久久久久久宅男 | 亚洲欧美日韩精品在线| 国产视频久久久久久久| 久久久精品日韩欧美| 雨宫琴音一区二区在线| 欧美成年视频| 亚洲人www| 国产主播一区二区| 久久人91精品久久久久久不卡| 尤物九九久久国产精品的特点 | 蜜桃精品一区二区三区| 亚洲激精日韩激精欧美精品| 欧美国产日本在线| 一区二区电影免费观看| 欧美偷拍另类| 欧美亚洲日本一区| 禁久久精品乱码| 欧美va亚洲va国产综合| 99国产精品久久久久久久久久| 国产精品大片wwwwww| 欧美主播一区二区三区美女 久久精品人| 国产综合欧美在线看| 免费观看久久久4p| 一区二区免费在线播放| 国产精一区二区三区| 久久久久亚洲综合| 亚洲日本中文字幕免费在线不卡| 欧美日韩在线一区二区三区| 性色av一区二区三区红粉影视| 在线成人激情| 欧美三日本三级三级在线播放| 亚洲一级电影| 黄网站免费久久| 欧美精品1区2区3区| 亚洲欧美三级在线| 影音先锋欧美精品| 欧美午夜在线| 久久久水蜜桃av免费网站| 亚洲精品女人| 国产欧美精品在线观看| 免费在线成人av| 亚洲一区二区在线看| 精品91久久久久| 欧美视频久久| 久久亚洲影院| 亚洲一区二区三区久久| 在线免费观看成人网| 欧美午夜激情视频| 久久亚洲春色中文字幕| 亚洲一二三区精品| 亚洲国产精品毛片| 国产精品女主播一区二区三区| 美女国产一区| 午夜精品美女自拍福到在线| 亚洲国产精品一区二区尤物区 | 一区二区三区在线免费视频| 欧美日韩一区二区三区免费看| 欧美在线视频二区| 一区二区三区日韩在线观看| 狠狠色狠色综合曰曰| 国产精品成人播放| 另类av导航| 欧美一级电影久久| 一区二区三区视频在线看| 在线日韩电影| 国产视频在线观看一区二区| 欧美日韩国产综合网| 久久综合色播五月| 午夜精品三级视频福利| 日韩午夜中文字幕| 在线成人亚洲| 国产视频久久| 国产精品高潮在线| 欧美精品日韩精品| 久久综合色8888| 久久国产精品一区二区三区| 亚洲少妇最新在线视频| 最新亚洲一区| 韩日欧美一区二区| 国产精品专区一| 欧美午夜一区| 女人天堂亚洲aⅴ在线观看| 性伦欧美刺激片在线观看| 夜夜嗨av一区二区三区四区| 亚洲国产日韩在线| 永久域名在线精品| 国产主播一区二区| 国产伦精品一区二区三区高清| 国产精品r级在线| 欧美破处大片在线视频| 欧美成人免费播放| 久久久久久久一区二区| 欧美一站二站| 香蕉久久夜色精品国产| 亚洲午夜精品| 一本一本久久a久久精品牛牛影视| 亚洲黄色影院| 1024成人| 在线观看成人网| 一区二区三区无毛| 极品日韩av| 狠狠爱综合网| 国产一区二区你懂的| 国产日韩欧美不卡在线| 国产伦精品一区二区| 国产精品爽黄69| 国产精品夜夜夜| 国产日韩欧美日韩大片| 国产欧美日韩亚洲一区二区三区| 国产欧美精品一区aⅴ影院| 国产精品日产欧美久久久久| 国产精品美女|