兩個線程讀寫同一個隊列 java多線程為什么不推薦使用excutor執(zhí)行?
java多線程為什么不推薦使用excutor執(zhí)行?Java中BlockingQueue有兩種主要實現(xiàn):arrayblockingqueue和linkedblockingqueue。Arrayblock
java多線程為什么不推薦使用excutor執(zhí)行?
Java中BlockingQueue有兩種主要實現(xiàn):arrayblockingqueue和linkedblockingqueue。Arrayblockingqueue是由array實現(xiàn)的有界阻塞隊列,必須設置其容量。linkedblockingqueue是由鏈表實現(xiàn)的有界阻塞隊列。容量可選擇性設置。如果不設置,它將是一個無限長的阻塞隊列,最大長度為Integer.MAX[value.
查看new singleexecutor的源代碼,您可以發(fā)現(xiàn)在創(chuàng)建linkedblockingqueue時沒有指定容量。此時,linkedblockingqueue是一個無邊界隊列。對于無邊界隊列,任務可以連續(xù)添加到隊列中。在這種情況下,由于任務太多,可能會發(fā)生內(nèi)存溢出。