Leniently accept tasks after context close in lifecycle stop phase
Schedulers remain strict, just plain executors are lenient on shutdown now.
An early shutdown for executors can be enforced via setStrictEarlyShutdown.
Closes gh-32226
@ -139,7 +139,11 @@ public abstract class ExecutorConfigurationSupport extends CustomizableThreadFac
@@ -139,7 +139,11 @@ public abstract class ExecutorConfigurationSupport extends CustomizableThreadFac
@ -294,6 +298,9 @@ public abstract class ExecutorConfigurationSupport extends CustomizableThreadFac
@@ -294,6 +298,9 @@ public abstract class ExecutorConfigurationSupport extends CustomizableThreadFac
@ -463,11 +470,29 @@ public abstract class ExecutorConfigurationSupport extends CustomizableThreadFac
@@ -463,11 +470,29 @@ public abstract class ExecutorConfigurationSupport extends CustomizableThreadFac
this.lateShutdown=true;
}
else{
// Early shutdown signal: accept no further tasks, let existing tasks complete
// before hitting the actual destruction step in the shutdown() method above.
@ -42,6 +42,8 @@ final class ExecutorLifecycleDelegate implements SmartLifecycle {
@@ -42,6 +42,8 @@ final class ExecutorLifecycleDelegate implements SmartLifecycle {
privatevolatilebooleanpaused;
privatevolatilebooleanshutdown;
privateintexecutingTaskCount=0;
@Nullable
@ -100,10 +102,14 @@ final class ExecutorLifecycleDelegate implements SmartLifecycle {
@@ -100,10 +102,14 @@ final class ExecutorLifecycleDelegate implements SmartLifecycle {
@ -71,11 +71,13 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport
@@ -71,11 +71,13 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport
privateintkeepAliveSeconds=60;
privateintqueueCapacity=Integer.MAX_VALUE;
privatebooleanallowCoreThreadTimeOut=false;
privatebooleanprestartAllCoreThreads=false;
privateintqueueCapacity=Integer.MAX_VALUE;
privatebooleanstrictEarlyShutdown=false;
privatebooleanexposeUnconfigurableExecutor=false;
@ -107,6 +109,18 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport
@@ -107,6 +109,18 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport
@ -129,15 +143,15 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport
@@ -129,15 +143,15 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport
@ -222,6 +236,13 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport
@@ -222,6 +236,13 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport
@ -98,6 +98,8 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
@@ -98,6 +98,8 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
privatebooleanprestartAllCoreThreads=false;
privatebooleanstrictEarlyShutdown=false;
@Nullable
privateTaskDecoratortaskDecorator;
@ -212,7 +214,7 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
@@ -212,7 +214,7 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
@ -220,6 +222,30 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
@@ -220,6 +222,30 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
@ -292,7 +318,7 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
@@ -292,7 +318,7 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
@ -424,4 +450,11 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
@@ -424,4 +450,11 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
@ -165,13 +165,16 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
@@ -165,13 +165,16 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
@ -183,18 +186,6 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
@@ -183,18 +186,6 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
@ -224,6 +215,18 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
@@ -224,6 +215,18 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator