1 为什么要用线程池?
- 减少资源消耗。直接使用线程池中的线程,不用再创建和销毁线程,减少了这部分工作消耗的资源。
- 提高响应速度。需要线程时,不用再等待创建线程了。
- 方便管理。线程池能对线程统一管理、分配、调优和监控。
2 几种常见的线程池和使用场景
Java中使用工厂类Executors生产线程池,可生产两种线程池:
- ExecutorService(立即执行线程池):尽快执行线程。(即只要线程池中有空闲线程,就立即执行线程任务。)
- ScheduledExecutorService(延迟执行线程池):在指定延迟后或周期性地执行线程任务。
2.1 生产立即执行线程池(ExecutorService)的方法
newCachedThreadPool()
newFixedThreadPool()
newSingleThreadPool()
2.2 生产延迟执行线程池(ScheduledExecutorService)的方法
newScheduledThreadPool()
newSingleThreadScheduledExecutor()