安卓:线程池(ThreadExecutePool):将线程存放到线程池中,用时直接取,不用销毁或取消
常用的四种线程池:
- 可缓存线程池(newCachedThreadPool):超过核心线程池时,可灵活回收空线程,不返回就新建线程
- 定长线程池(newFixedThreadPool):控制并发数,超过就等待
- 定长的线程池(newScheduledThreadPool):支持周期及定时任务
- 单线程池(newSingleThreadExecutor):保证任务先进先出执行
七个参数:
- 核心线程数(corePoolSize):是线程池最小的线程数,在线程池中一直保持一定数量的线程不受空闲时间影响
- 最大线程池(maximumPoolSize):线程池最大的线程数
- 工厂队列(workQueue):创建新线程,可定制线程组、优先级等
- 阻塞策略(rejectedExecutionHandler):当核心线程池达到极限时,触发阻塞策略,常见策略有:直接抛出异常、丢弃任务等
- 拒绝策略(handler):当线程池和线程任务达到最大时,无法接收新的任务,触发拒绝策略,常见策略有:直接抛出异常、丢弃任务等
- 空闲线程可存活时间(keepAliveTime):当线程任务超过核心线程数时,多余线程被回收,此参数是非核心线程空闲时间,超时将被回收
- 工作队列(threadFactory):储存等待执行的线程任务,当线程数达到核心线程数时,新任务加入队列等待执行
鸿蒙:任务池(TaskPool):提供一个多线程的环境,降低资源消耗
(ps:图来自官方文档)
线程状态说明:
初始化(Init):线程正在被创建。
就绪(Ready):在就绪列表,等待 CPU 调度。
运行(Running):正在运行。
阻塞(Blocked):该线程被阻塞挂起。
退出(Exit):该线程运行结束,等待父线程回收其控制块资源。
两者有很多共同点,对比学习能更快理解加速学习