自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

去字節(jié)面試被面這題能答上來嗎?談?wù)勀銓?duì)時(shí)間輪的理解?

開發(fā) 前端
時(shí)間輪,環(huán)狀數(shù)組里面的每個(gè)元素,都是用來存儲(chǔ)定時(shí)任務(wù)的容器,當(dāng)我們向時(shí)間輪里面添加一個(gè)定時(shí)任務(wù)的時(shí)候,我們會(huì)根據(jù)定時(shí)任務(wù)的執(zhí)行時(shí)間計(jì)算它所存儲(chǔ)的數(shù)組下標(biāo)。當(dāng)然,有可能在某個(gè)時(shí)間刻度上會(huì)存在多個(gè)定時(shí)任務(wù),這個(gè)時(shí)候會(huì)采用雙向鏈表的方式來存儲(chǔ)。

?1.什么是時(shí)間輪

時(shí)間輪,簡單理解就是一種=個(gè)用來存儲(chǔ)定時(shí)任務(wù)的環(huán)狀數(shù)組,它的工作原理和鐘表的表盤類似。

圖片

它由兩個(gè)部分組成, 一個(gè)是環(huán)狀數(shù)組,另一個(gè)是遍歷環(huán)狀數(shù)組的指針。

首先,要定義一個(gè)固定長度的環(huán)狀數(shù)組,然后數(shù)組的每一個(gè)元素代表一個(gè)時(shí)間刻度,假設(shè)每個(gè)刻度間隔是 1s,那么長度為 8 的數(shù)組,就代表 8 秒鐘。

然后,就是有一個(gè)指針,這個(gè)指針按照順時(shí)針無限地循環(huán)這個(gè)數(shù)組,每隔1個(gè)最小的時(shí)間單位就前進(jìn)一個(gè)數(shù)組索引。

圖片

這個(gè)指針完整地轉(zhuǎn)1圈,就代表 8 秒鐘,轉(zhuǎn)兩圈表示 16 秒,假設(shè)從 0 點(diǎn) 0 分 0 秒開始,轉(zhuǎn)

一圈以后就到了 0 點(diǎn) 0 分 9 秒鐘。

2.工作原理

時(shí)間輪,環(huán)狀數(shù)組里面的每個(gè)元素,都是用來存儲(chǔ)定時(shí)任務(wù)的容器,當(dāng)我們向時(shí)間輪里面添加一個(gè)定時(shí)任務(wù)的時(shí)候,我們會(huì)根據(jù)定時(shí)任務(wù)的執(zhí)行時(shí)間計(jì)算它所存儲(chǔ)的數(shù)組下標(biāo)。當(dāng)然,有可能在某個(gè)時(shí)間刻度上會(huì)存在多個(gè)定時(shí)任務(wù),這個(gè)時(shí)候會(huì)采用雙向鏈表的方式來存儲(chǔ)。

圖片

當(dāng)指針指向某個(gè)數(shù)組的時(shí)候,就會(huì)把這個(gè)數(shù)組中存儲(chǔ)的任務(wù)取出來,然后遍歷這個(gè)鏈表逐個(gè)運(yùn)行里面的任務(wù)。

那如果某個(gè)定時(shí)任務(wù)的執(zhí)行時(shí)間大于環(huán)形數(shù)組所表示的長度,一般可以使用一個(gè)圈數(shù)來表示該任務(wù)的延遲執(zhí)行時(shí)間。比如,1個(gè)第 16 秒要執(zhí)行的任務(wù),那意味著這個(gè)任務(wù)應(yīng)該是在第2圈的數(shù)組下標(biāo) 為0 的位置執(zhí)行。

3.優(yōu)、缺點(diǎn)分析

使用時(shí)間輪的方式來管理多個(gè)定時(shí)任務(wù)的好處有很多,我認(rèn)為有兩個(gè)比較重要的優(yōu)點(diǎn):

(1)減少定時(shí)任務(wù)添加和刪除的時(shí)間復(fù)雜度,提升性能。

(2)可以保證每次執(zhí)行定時(shí)器任務(wù)都是 O(1)復(fù)雜度,在定時(shí)器任務(wù)密集的情況下,性能優(yōu)勢(shì)非常明顯。

當(dāng)然,時(shí)間輪也有缺點(diǎn),對(duì)于執(zhí)行時(shí)間非常嚴(yán)格的任務(wù),時(shí)間輪不是很適合,因?yàn)闀r(shí)間輪算法的精度取決于最小時(shí)間單元的粒度。假設(shè)以 1s 為一個(gè)時(shí)間刻度,那小于 1s 的任務(wù)就無法被時(shí)間輪調(diào)度。

時(shí)間輪算法在很多框架中都有用到,比如 Dubbo、Netty、Kafka 等。

時(shí)間輪算法也是一個(gè)比較經(jīng)典的設(shè)計(jì)。使用范圍比較廣,但是在實(shí)際應(yīng)用中,大部分同學(xué)接觸非常少。我認(rèn)為這種設(shè)計(jì)思想或者這種數(shù)據(jù)結(jié)構(gòu),在我們實(shí)際應(yīng)用中的某些特定場(chǎng)景也是可以借鑒和使用的。比如定時(shí)重試、衰減重試等等。

責(zé)任編輯:武曉燕 來源: Tom彈架構(gòu)
相關(guān)推薦

2022-03-21 14:09:19

面試C語言代碼

2019-06-06 10:00:22

2021-06-29 10:21:54

this面試前端

2009-12-11 09:09:46

Windows 7全球派對(duì)

2024-07-24 13:58:21

2021-03-10 08:04:11

this面試題JavaScript

2023-11-10 08:44:13

分布式鎖分布式系統(tǒng)

2022-09-09 10:15:06

OAuthJava

2025-02-21 15:25:54

虛擬線程輕量級(jí)

2024-09-27 15:43:52

零拷貝DMAIO

2025-03-21 00:00:05

Reactor設(shè)計(jì)模式I/O 機(jī)制

2024-10-24 16:14:43

數(shù)據(jù)傳輸CPU零拷貝

2022-03-21 09:05:18

volatileCPUJava

2019-11-14 16:05:29

TCPHTTP前端

2023-06-13 07:50:49

Gopher格式化時(shí)間

2020-09-24 10:30:29

Redis數(shù)據(jù)庫面試

2022-06-30 09:10:33

NoSQLHBaseRedis

2023-11-28 12:25:02

多線程安全

2024-08-27 12:36:33

2025-04-09 00:00:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)