java中static java多線(xiàn)程為什么不推薦使用excutor執(zhí)行?
java多線(xiàn)程為什么不推薦使用excutor執(zhí)行?java中BlockingQueue主要有兩種實(shí)現(xiàn),分別是ArrayBlockingQueue和LinkedBlockingQueue。ArrayBl
java多線(xiàn)程為什么不推薦使用excutor執(zhí)行?
java中BlockingQueue主要有兩種實(shí)現(xiàn),分別是ArrayBlockingQueue和LinkedBlockingQueue。ArrayBlockingQueue是一個(gè)用數(shù)組實(shí)現(xiàn)的有界阻塞隊(duì)列,必須設(shè)置容量。而LinkedBlockingQueue是一個(gè)用鏈表實(shí)現(xiàn)的有界阻塞隊(duì)列,容量可以選擇進(jìn)行設(shè)置,不設(shè)置的話(huà),將是一個(gè)無(wú)邊界的阻塞隊(duì)列,最大長(zhǎng)度為Integer.MAX_VALUE.
查看new SingleExecutor時(shí)的源碼可以發(fā)現(xiàn),在創(chuàng)建LinkedBlockingQueue時(shí),并未指定容量。此時(shí),LinkedBlockingQueue就是一個(gè)無(wú)邊界隊(duì)列,對(duì)于一個(gè)無(wú)邊界隊(duì)列來(lái)說(shuō),是可以不斷的向隊(duì)列中加入任務(wù)的,這種情況下就有可能因?yàn)槿蝿?wù)過(guò)多而導(dǎo)致內(nèi)存溢出的問(wèn)題。