Module java.base

Class ThreadPoolExecutor.DiscardOldestPolicy

java.lang.Object
java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy
所有已实现的接口:
RejectedExecutionHandler
封闭类:
ThreadPoolExecutor

public static class ThreadPoolExecutor.DiscardOldestPolicy extends Object implements RejectedExecutionHandler
一个处理被拒绝任务的处理程序,它丢弃最老的未处理请求,然后重试execute,除非执行程序已关闭,在这种情况下,任务将被丢弃。在其他线程可能正在等待任务终止或必须记录失败的情况下,此策略很少有用。而是考虑使用以下形式的处理程序:
 
 new RejectedExecutionHandler() {
   public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
     Runnable dropped = e.getQueue().poll();
     if (dropped instanceof Future<?>) {
       ((Future<?>)dropped).cancel(false);
       // 还要考虑记录失败
     }
     e.execute(r);  // 重试
 }}
  • Constructor Details

    • DiscardOldestPolicy

      public DiscardOldestPolicy()
      创建给定执行程序的DiscardOldestPolicy
  • Method Details

    • rejectedExecution

      public void rejectedExecution(Runnable r, ThreadPoolExecutor e)
      获取并忽略执行程序否则会执行的下一个任务(如果立即可用),然后重试任务r的执行,除非执行程序已关闭,在这种情况下,任务r将被丢弃。
      指定者:
      rejectedExecution 在接口 RejectedExecutionHandler
      参数:
      r - 请求执行的可运行任务
      e - 尝试执行此任务的执行程序