Java常见的六种线程池、线程池-四种拒绝策略总结

一、线程池的四种拒绝策略:

    CallerRunsPolicy - 当触发拒绝策略,只要线程池没有关闭的话,则使用调用线程直接运行任务。 一般并发比较小,性能要求不高,不允许失败。 但是,由于调用者自己运行任务,如果任务提交速度过快,可能导致程序阻塞,性能效率上必然的损失较大 AbortPolicy - 丢弃任务,并抛出拒绝执行 RejectedExecutionException 异常信息。 线程池默认的拒绝策略。 必须处理好抛出的异常,否则会打断当前的执行流程,影响后续的任务执行。 DiscardPolicy - 直接丢弃,其他啥都没有 DiscardOldestPolicy - 当触发拒绝策略,只要线程池没有关闭的话,丢弃阻塞队列 workQueue 中最老的一个任务,并将新任务加入

二、Java中的六种线程池

线程池名称 描述 FixedThreadPool 核心线程数与最大线程数相同 SingleThreadExecutor 一个线程的线程池 CachedThreadPool 核心线程为0,最大线程数为Integer. MAX_VALUE ScheduledThreadPool 指定核心线程数的定时线程池 SingleThreadScheduledExecutor 单例的定时线程池 ForkJoinPool JDK 7 新加入的一种线程池
    ThreadPoolExecutor的类图,以及Executors的主要方法
经验分享 程序员 微信小程序 职场和发展