From 50550717d68449c310bfad3acd3e03849ccf22f1 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 2 Aug 2018 14:36:53 +0200 Subject: [PATCH] SchedulingTaskExecutor provides prefersShortLivedTasks default method Issue: SPR-17116 --- .../quartz/SimpleThreadPoolTaskExecutor.java | 10 +----- .../scheduling/SchedulingTaskExecutor.java | 31 +++++++++---------- .../concurrent/ConcurrentTaskExecutor.java | 8 ----- .../concurrent/ThreadPoolTaskExecutor.java | 8 ----- .../concurrent/ThreadPoolTaskScheduler.java | 5 --- .../jca/work/WorkManagerTaskExecutor.java | 10 +----- 6 files changed, 17 insertions(+), 55 deletions(-) diff --git a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleThreadPoolTaskExecutor.java b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleThreadPoolTaskExecutor.java index 458f5c3c13..0b28859803 100644 --- a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleThreadPoolTaskExecutor.java +++ b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleThreadPoolTaskExecutor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -109,14 +109,6 @@ public class SimpleThreadPoolTaskExecutor extends SimpleThreadPool return future; } - /** - * This task executor prefers short-lived work units. - */ - @Override - public boolean prefersShortLivedTasks() { - return true; - } - @Override public void destroy() { diff --git a/spring-context/src/main/java/org/springframework/scheduling/SchedulingTaskExecutor.java b/spring-context/src/main/java/org/springframework/scheduling/SchedulingTaskExecutor.java index 1c97f7905f..fa3e01692f 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/SchedulingTaskExecutor.java +++ b/spring-context/src/main/java/org/springframework/scheduling/SchedulingTaskExecutor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,21 +42,20 @@ import org.springframework.core.task.AsyncTaskExecutor; public interface SchedulingTaskExecutor extends AsyncTaskExecutor { /** - * Does this {@code TaskExecutor} prefer short-lived tasks over - * long-lived tasks? - *

A {@code SchedulingTaskExecutor} implementation can indicate - * whether it prefers submitted tasks to perform as little work as they - * can within a single task execution. For example, submitted tasks - * might break a repeated loop into individual subtasks which submit a - * follow-up task afterwards (if feasible). - *

This should be considered a hint. Of course {@code TaskExecutor} - * clients are free to ignore this flag and hence the - * {@code SchedulingTaskExecutor} interface overall. However, thread - * pools will usually indicated a preference for short-lived tasks, to be - * able to perform more fine-grained scheduling. - * @return {@code true} if this {@code TaskExecutor} prefers - * short-lived tasks + * Does this {@code TaskExecutor} prefer short-lived tasks over long-lived tasks? + *

A {@code SchedulingTaskExecutor} implementation can indicate whether it + * prefers submitted tasks to perform as little work as they can within a single + * task execution. For example, submitted tasks might break a repeated loop into + * individual subtasks which submit a follow-up task afterwards (if feasible). + *

This should be considered a hint. Of course {@code TaskExecutor} clients + * are free to ignore this flag and hence the {@code SchedulingTaskExecutor} + * interface overall. However, thread pools will usually indicated a preference + * for short-lived tasks, allowing for more fine-grained scheduling. + * @return {@code true} if this executor prefers short-lived tasks (the default), + * {@code false} otherwise (for treatment like a regular {@code TaskExecutor}) */ - boolean prefersShortLivedTasks(); + default boolean prefersShortLivedTasks() { + return true; + } } diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskExecutor.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskExecutor.java index 592e3af73b..4ee6ac5c2c 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskExecutor.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskExecutor.java @@ -166,14 +166,6 @@ public class ConcurrentTaskExecutor implements AsyncListenableTaskExecutor, Sche return this.adaptedExecutor.submitListenable(task); } - /** - * This task executor prefers short-lived work units. - */ - @Override - public boolean prefersShortLivedTasks() { - return true; - } - private static TaskExecutorAdapter getAdaptedExecutor(Executor concurrentExecutor) { if (managedExecutorServiceClass != null && managedExecutorServiceClass.isInstance(concurrentExecutor)) { diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.java index df6531719e..84ade56958 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.java @@ -381,12 +381,4 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport } } - /** - * This task executor prefers short-lived work units. - */ - @Override - public boolean prefersShortLivedTasks() { - return true; - } - } diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskScheduler.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskScheduler.java index 39e7fe17d9..c19ea3a686 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskScheduler.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskScheduler.java @@ -298,11 +298,6 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport } } - @Override - public boolean prefersShortLivedTasks() { - return true; - } - // TaskScheduler implementation diff --git a/spring-tx/src/main/java/org/springframework/jca/work/WorkManagerTaskExecutor.java b/spring-tx/src/main/java/org/springframework/jca/work/WorkManagerTaskExecutor.java index cdc5800d2c..ebb656a645 100644 --- a/spring-tx/src/main/java/org/springframework/jca/work/WorkManagerTaskExecutor.java +++ b/spring-tx/src/main/java/org/springframework/jca/work/WorkManagerTaskExecutor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -287,14 +287,6 @@ public class WorkManagerTaskExecutor extends JndiLocatorSupport return future; } - /** - * This task executor prefers short-lived work units. - */ - @Override - public boolean prefersShortLivedTasks() { - return true; - } - //------------------------------------------------------------------------- // Implementation of the JCA WorkManager interface