java三種隊(duì)列詳解 JAVA如何用隊(duì)列實(shí)現(xiàn)并發(fā)?
JAVA如何用隊(duì)列實(shí)現(xiàn)并發(fā)?如果是為了爭(zhēng)奪資源,按照先到先得的規(guī)則不作弊,那么一個(gè)相對(duì)簡(jiǎn)單的實(shí)現(xiàn)就是排隊(duì)。無(wú)論請(qǐng)求的并發(fā)度有多高,如果用線程來(lái)服務(wù)用戶,也就是說(shuō)一個(gè)人請(qǐng)求資源,那么就啟動(dòng)一個(gè)線程,CP
JAVA如何用隊(duì)列實(shí)現(xiàn)并發(fā)?
如果是為了爭(zhēng)奪資源,按照先到先得的規(guī)則不作弊,那么一個(gè)相對(duì)簡(jiǎn)單的實(shí)現(xiàn)就是排隊(duì)。無(wú)論請(qǐng)求的并發(fā)度有多高,如果用線程來(lái)服務(wù)用戶,也就是說(shuō)一個(gè)人請(qǐng)求資源,那么就啟動(dòng)一個(gè)線程,CPU總是按順序執(zhí)行線程,比如現(xiàn)在有三個(gè)人(passer-by-a,passer-by-B,passer-by-C)請(qǐng)求一個(gè)資源,服務(wù)器有三個(gè)線程為這三個(gè)人服務(wù)。假設(shè)這三個(gè)人在請(qǐng)求時(shí)沒(méi)有足夠的幸運(yùn)及時(shí)得到CPU時(shí)間片,那么他們就等于公平競(jìng)爭(zhēng)CPU資源,CPU選擇運(yùn)行線程的順序是不確定的,如果選擇運(yùn)行路人C的線程,就把它放入隊(duì)列。路人B、路人C等,可能會(huì)想,為什么不及時(shí)處理,因?yàn)楹罄m(xù)的操作可能很費(fèi)時(shí),而且線程需要很長(zhǎng)時(shí)間。如果有更多的人請(qǐng)求資源,服務(wù)器可能會(huì)掛斷