每次都new Thread的弊端如下:
每次new Thread新建对象性能差。线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。缺乏更多功能,如定时执行、定期执行、线程中断。线程池的好处在于:
重用存在的线程,减少对象创建、消亡的开销,性能佳。可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。提供定时执行、定期执行、单线程、并发数控制等功能。java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService和ScheduledExecutorService,实现为ThreadPoolExecutor和ScheduledThreadPoolExecutor。
也可以使用PriorityBlockingQueue来实现调度任务优先级。
参考: 聊聊并发,JAVA线程池的分析和使用 Java自带线程池和队列详解 Trinea的介绍new Thread的弊端及Java四种线程池的使用 使用线程池处理异步任务
新闻热点
疑难解答