From d8b39bf5d22db36908877f9bfaedd04a442ae1b4 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 9 Jul 2021 15:19:25 +0200 Subject: [PATCH] Code alignment between ThreadPoolTaskExecutor and ThreadPoolTaskScheduler See gh-26700 --- .../scheduling/concurrent/ThreadPoolTaskScheduler.java | 6 +++--- .../scheduling/concurrent/ThreadPoolTaskExecutorTests.java | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) 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 de7bdb286a67..c952131974da 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 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -84,10 +84,10 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport */ public void setPoolSize(int poolSize) { Assert.isTrue(poolSize > 0, "'poolSize' must be 1 or higher"); - this.poolSize = poolSize; if (this.scheduledExecutor instanceof ScheduledThreadPoolExecutor) { ((ScheduledThreadPoolExecutor) this.scheduledExecutor).setCorePoolSize(poolSize); } + this.poolSize = poolSize; } /** @@ -97,13 +97,13 @@ public void setPoolSize(int poolSize) { *

This setting can be modified at runtime, for example through JMX. */ public void setRemoveOnCancelPolicy(boolean removeOnCancelPolicy) { - this.removeOnCancelPolicy = removeOnCancelPolicy; if (this.scheduledExecutor instanceof ScheduledThreadPoolExecutor) { ((ScheduledThreadPoolExecutor) this.scheduledExecutor).setRemoveOnCancelPolicy(removeOnCancelPolicy); } else if (removeOnCancelPolicy && this.scheduledExecutor != null) { logger.debug("Could not apply remove-on-cancel policy - not a ScheduledThreadPoolExecutor"); } + this.removeOnCancelPolicy = removeOnCancelPolicy; } /** diff --git a/spring-context/src/test/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutorTests.java b/spring-context/src/test/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutorTests.java index 831eff1df03d..afc629b882ae 100644 --- a/spring-context/src/test/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutorTests.java +++ b/spring-context/src/test/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -19,6 +19,7 @@ import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Test; + import org.springframework.core.task.AsyncListenableTaskExecutor; import static org.assertj.core.api.Assertions.assertThat; @@ -32,6 +33,7 @@ class ThreadPoolTaskExecutorTests extends AbstractSchedulingTaskExecutorTests { private final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + @Override protected AsyncListenableTaskExecutor buildExecutor() { executor.setThreadNamePrefix(this.threadNamePrefix); @@ -40,6 +42,7 @@ protected AsyncListenableTaskExecutor buildExecutor() { return executor; } + @Test void modifyCorePoolSizeWhileRunning() { assertThat(executor.getCorePoolSize()).isEqualTo(1); @@ -108,4 +111,5 @@ void modifyKeepAliveSecondsWithInvalidValueWhileRunning() { assertThat(executor.getKeepAliveSeconds()).isEqualTo(60); assertThat(executor.getThreadPoolExecutor().getKeepAliveTime(TimeUnit.SECONDS)).isEqualTo(60); } + }