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