java隊(duì)列queue使用場(chǎng)景 java為什么要使用隊(duì)列?
java為什么要使用隊(duì)列?隊(duì)列是一種數(shù)據(jù)結(jié)構(gòu),與語(yǔ)言無(wú)關(guān)。任何其他語(yǔ)言都有實(shí)現(xiàn)隊(duì)列的數(shù)據(jù)結(jié)構(gòu)。只有當(dāng)元素是FIFO時(shí),才稱為隊(duì)列。Java queue提供了一個(gè)隊(duì)列接口,并提供了多種實(shí)現(xiàn)來(lái)滿足不同的場(chǎng)
java為什么要使用隊(duì)列?
隊(duì)列是一種數(shù)據(jù)結(jié)構(gòu),與語(yǔ)言無(wú)關(guān)。任何其他語(yǔ)言都有實(shí)現(xiàn)隊(duì)列的數(shù)據(jù)結(jié)構(gòu)。
只有當(dāng)元素是FIFO時(shí),才稱為隊(duì)列。
Java queue提供了一個(gè)隊(duì)列接口,并提供了多種實(shí)現(xiàn)來(lái)滿足不同的場(chǎng)景
如果是為了抓取資源,在沒(méi)有作弊的情況下,按照先到先得的規(guī)則,那么相對(duì)簡(jiǎn)單的實(shí)現(xiàn)就是隊(duì)列,無(wú)論請(qǐng)求的并發(fā)度有多高,如果線程是用來(lái)實(shí)現(xiàn)用戶服務(wù)的,也就是說(shuō)如果一個(gè)人請(qǐng)求資源,就會(huì)啟動(dòng)一個(gè)線程,CPU的執(zhí)行線程總是順序的。例如,如果有三個(gè)人(passer-a,passer-B,passer-C)請(qǐng)求一個(gè)資源,那么服務(wù)器將有三個(gè)線程來(lái)為這三個(gè)人服務(wù),這三個(gè)人在請(qǐng)求時(shí)并沒(méi)有很幸運(yùn)地及時(shí)得到CPU時(shí)間片,因此他們等于公平競(jìng)爭(zhēng)CPU資源,CPU選擇在一個(gè)不確定的環(huán)境中運(yùn)行線程命令。假設(shè)選擇了passer-by C的線程來(lái)運(yùn)行,然后將其放入隊(duì)列中。路人B、路人C等等,然后他們可能會(huì)想為什么不及時(shí)處理,因?yàn)楹罄m(xù)的操作可能會(huì)很耗時(shí),線程需要很長(zhǎng)時(shí)間,如果有更多的人請(qǐng)求資源,服務(wù)器可能會(huì)掛斷