提交 50550717 编写于 作者: J Juergen Hoeller

SchedulingTaskExecutor provides prefersShortLivedTasks default method

Issue: SPR-17116
上级 c46dacc2
/* /*
* 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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -109,14 +109,6 @@ public class SimpleThreadPoolTaskExecutor extends SimpleThreadPool ...@@ -109,14 +109,6 @@ public class SimpleThreadPoolTaskExecutor extends SimpleThreadPool
return future; return future;
} }
/**
* This task executor prefers short-lived work units.
*/
@Override
public boolean prefersShortLivedTasks() {
return true;
}
@Override @Override
public void destroy() { public void destroy() {
......
/* /*
* 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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -42,21 +42,20 @@ import org.springframework.core.task.AsyncTaskExecutor; ...@@ -42,21 +42,20 @@ import org.springframework.core.task.AsyncTaskExecutor;
public interface SchedulingTaskExecutor extends AsyncTaskExecutor { public interface SchedulingTaskExecutor extends AsyncTaskExecutor {
/** /**
* Does this {@code TaskExecutor} prefer short-lived tasks over * Does this {@code TaskExecutor} prefer short-lived tasks over long-lived tasks?
* long-lived tasks? * <p>A {@code SchedulingTaskExecutor} implementation can indicate whether it
* <p>A {@code SchedulingTaskExecutor} implementation can indicate * prefers submitted tasks to perform as little work as they can within a single
* whether it prefers submitted tasks to perform as little work as they * task execution. For example, submitted tasks might break a repeated loop into
* can within a single task execution. For example, submitted tasks * individual subtasks which submit a follow-up task afterwards (if feasible).
* might break a repeated loop into individual subtasks which submit a * <p>This should be considered a hint. Of course {@code TaskExecutor} clients
* follow-up task afterwards (if feasible). * are free to ignore this flag and hence the {@code SchedulingTaskExecutor}
* <p>This should be considered a hint. Of course {@code TaskExecutor} * interface overall. However, thread pools will usually indicated a preference
* clients are free to ignore this flag and hence the * for short-lived tasks, allowing for more fine-grained scheduling.
* {@code SchedulingTaskExecutor} interface overall. However, thread * @return {@code true} if this executor prefers short-lived tasks (the default),
* pools will usually indicated a preference for short-lived tasks, to be * {@code false} otherwise (for treatment like a regular {@code TaskExecutor})
* able to perform more fine-grained scheduling.
* @return {@code true} if this {@code TaskExecutor} prefers
* short-lived tasks
*/ */
boolean prefersShortLivedTasks(); default boolean prefersShortLivedTasks() {
return true;
}
} }
...@@ -166,14 +166,6 @@ public class ConcurrentTaskExecutor implements AsyncListenableTaskExecutor, Sche ...@@ -166,14 +166,6 @@ public class ConcurrentTaskExecutor implements AsyncListenableTaskExecutor, Sche
return this.adaptedExecutor.submitListenable(task); 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) { private static TaskExecutorAdapter getAdaptedExecutor(Executor concurrentExecutor) {
if (managedExecutorServiceClass != null && managedExecutorServiceClass.isInstance(concurrentExecutor)) { if (managedExecutorServiceClass != null && managedExecutorServiceClass.isInstance(concurrentExecutor)) {
......
...@@ -381,12 +381,4 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport ...@@ -381,12 +381,4 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
} }
} }
/**
* This task executor prefers short-lived work units.
*/
@Override
public boolean prefersShortLivedTasks() {
return true;
}
} }
...@@ -298,11 +298,6 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport ...@@ -298,11 +298,6 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport
} }
} }
@Override
public boolean prefersShortLivedTasks() {
return true;
}
// TaskScheduler implementation // TaskScheduler implementation
......
/* /*
* 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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -287,14 +287,6 @@ public class WorkManagerTaskExecutor extends JndiLocatorSupport ...@@ -287,14 +287,6 @@ public class WorkManagerTaskExecutor extends JndiLocatorSupport
return future; return future;
} }
/**
* This task executor prefers short-lived work units.
*/
@Override
public boolean prefersShortLivedTasks() {
return true;
}
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
// Implementation of the JCA WorkManager interface // Implementation of the JCA WorkManager interface
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册