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 Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
获取并忽略执行程序否则会执行的下一个任务(如果立即可用),然后重试任务r的执行,除非执行程序已关闭,在这种情况下,任务r将被丢弃。
-
Constructor Details
-
DiscardOldestPolicy
public DiscardOldestPolicy()创建给定执行程序的DiscardOldestPolicy
。
-
-
Method Details
-
rejectedExecution
获取并忽略执行程序否则会执行的下一个任务(如果立即可用),然后重试任务r的执行,除非执行程序已关闭,在这种情况下,任务r将被丢弃。- 指定者:
-
rejectedExecution
在接口RejectedExecutionHandler
- 参数:
-
r
- 请求执行的可运行任务 -
e
- 尝试执行此任务的执行程序
-