码上敲享录 > java高并发常见问题 > ThreadPoolExecutor线程池的五种拒绝策略用法

ThreadPoolExecutor线程池的五种拒绝策略用法

上一章章节目录下一章 2019-08-23已有3692人阅读 评论(0)

ThreadPoolExecutor线程池的五种拒绝策略


解决方法:

1.AbortPolicy:拒绝添加任务,并抛出异常,为默认的策略。例如pool.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());


2.DiscardPolicy:抛弃当前任务,会直接丢掉这个任务并且不会有任何异常。例如pool.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy());  


3.DiscardOldestPolicy:抛弃最老的任务。例如:pool.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardOldestPolicy());

4.CallerRunsPolicy:让线程池中的线程去执行这个任务,如果线程池中没空闲的线程,那么主线程会自己去执行该任务,不会等待线程池中的线程去执行。pool.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());


5.自定义策略:可以根据你自己的业务代码来处理。例如:pool.setRejectedExecutionHandler((r, executor) -> { //业务代码     });


0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交