每次都new Thread的弊端如下:
每次new Thread新建對象性能差。線程缺乏統(tǒng)一管理,可能無限制新建線程,相互之間競爭,及可能占用過多系統(tǒng)資源導致死機或oom。缺乏更多功能,如定時執(zhí)行、定期執(zhí)行、線程中斷。線程池的好處在于:
重用存在的線程,減少對象創(chuàng)建、消亡的開銷,性能佳。可有效控制最大并發(fā)線程數(shù),提高系統(tǒng)資源的使用率,同時避免過多資源競爭,避免堵塞。提供定時執(zhí)行、定期執(zhí)行、單線程、并發(fā)數(shù)控制等功能。java里面線程池的頂級接口是Executor,但是嚴格意義上講Executor并不是一個線程池,而只是一個執(zhí)行線程的工具。真正的線程池接口是ExecutorService和ScheduledExecutorService,實現(xiàn)為ThreadPoolExecutor和ScheduledThreadPoolExecutor。
threadFactory 線程工廠,為線程池提供創(chuàng)建新線程的功能。ThreadFactory是一個接口。Executors中提供了DefaultThreadFactory。RejectedExecutionHandler the handler to use when execution is blocked because the thread bounds and queue capacities are reached。當任務無法被執(zhí)行時(超過線程最大容量maximum并且queue已經(jīng)被排滿了)的處理策略。默認為AbortPolicy,直接拋出異常。 

也可以使用PriorityBlockingQueue來實現(xiàn)調(diào)度任務優(yōu)先級。
參考: 聊聊并發(fā),JAVA線程池的分析和使用 Java自帶線程池和隊列詳解 Trinea的介紹new Thread的弊端及Java四種線程池的使用 使用線程池處理異步任務
新聞熱點
疑難解答