多个角度全方位带你深入理解 Java 线程池
一、简介 什么是线程池 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。 为什么要用线程池 如果并发请求数量很多,但每个线程执行的时间很短,就会出现频繁的创建和销毁线程。如此一来,会大大降低系统的效率,可能频繁创建和销毁线程的时间、资源开销要大于实际工作的所需。 正是由于这个问题,所以有必要引入线程池。使用 线程池的好处 有以下几点: 降低资源消耗 - 通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度 - 当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性 - 线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。 二、Executor 框架 Executor 框架是一个根据一组执行策略调用,调度,执行和控制的异步任务的框架,目的是提供一种将”任务提交”与”任务如何运行”分离开来的机制。 核心 API 概述 Executor 框架核心 API 如下: Executor - 运行任务的简单接口。 ExecutorService - 扩展了 Executor 接口。扩展能力: 支持有返回值的线程; 支持管理线程的生命周期。 ScheduledExecutorService - 扩展了