zoukankan      html  css  js  c++  java
  • 线程池拒绝策略分析

    拒绝策略场景分析

    (1)AbortPolicy

    ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。

    这是线程池默认的拒绝策略,在任务不能再提交的时候,抛出异常,及时反馈程序运行状态。如果是比较关键的业务,推荐使用此拒绝策略,这样子在系统不能承载更大的并发量的时候,能够及时的通过异常发现。

    (2)DiscardPolicy

    ThreadPoolExecutor.DiscardPolicy:丢弃任务,但是不抛出异常。如果线程队列已满,则后续提交的任务都会被丢弃,且是静默丢弃。

    使用此策略,可能会使我们无法发现系统的异常状态。建议是一些无关紧要的业务采用此策略。例如,本人的博客网站统计阅读量就是采用的这种拒绝策略。

    (3)DiscardOldestPolicy

    ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新提交被拒绝的任务。

    此拒绝策略,是一种喜新厌旧的拒绝策略。是否要采用此种拒绝策略,还得根据实际业务是否允许丢弃老任务来认真衡量。

    (4)CallerRunsPolicy

    ThreadPoolExecutor.CallerRunsPolicy:由调用线程处理该任务

    如果任务被拒绝了,则由调用线程(提交任务的线程)直接执行此任务,

  • 相关阅读:
    Light OJ 1030
    Light OJ 1027
    [转]Learn SQLite in 1 hour
    基于 Arduino 的 RFID 识别实验
    RFID 知识的学习
    Arduino UNO R3
    浪潮之巅(第2版)- 读书笔记
    [转]周易入门三十五问答
    Nginx代码风格图示
    封神演义
  • 原文地址:https://www.cnblogs.com/maohuidong/p/14061370.html
Copyright © 2011-2022 走看看