Skip to content

Commit 0a97451

Browse files
committed
Expose awaitTerminationMillis presion
Closes gh-24496
1 parent 28a95e8 commit 0a97451

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

spring-context/src/main/java/org/springframework/scheduling/concurrent/ExecutorConfigurationSupport.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2018 the original author or authors.
2+
* Copyright 2002-2020 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -59,7 +59,7 @@ public abstract class ExecutorConfigurationSupport extends CustomizableThreadFac
5959

6060
private boolean waitForTasksToCompleteOnShutdown = false;
6161

62-
private int awaitTerminationSeconds = 0;
62+
private long awaitTerminationMillis = 0;
6363

6464
@Nullable
6565
private String beanName;
@@ -145,9 +145,20 @@ public void setWaitForTasksToCompleteOnShutdown(boolean waitForJobsToCompleteOnS
145145
* @see java.util.concurrent.ExecutorService#awaitTermination
146146
*/
147147
public void setAwaitTerminationSeconds(int awaitTerminationSeconds) {
148-
this.awaitTerminationSeconds = awaitTerminationSeconds;
148+
this.awaitTerminationMillis = awaitTerminationSeconds * 1000;
149149
}
150150

151+
/**
152+
* Variant of {@link #setAwaitTerminationSeconds} with millisecond precision.
153+
* @since 5.2.4
154+
* @see java.util.concurrent.ExecutorService#shutdown()
155+
* @see java.util.concurrent.ExecutorService#awaitTermination
156+
*/
157+
public void setAwaitTerminationMillis(long awaitTerminationMillis) {
158+
this.awaitTerminationMillis = awaitTerminationMillis;
159+
}
160+
161+
151162
@Override
152163
public void setBeanName(String name) {
153164
this.beanName = name;
@@ -239,9 +250,9 @@ protected void cancelRemainingTask(Runnable task) {
239250
* {@link #setAwaitTerminationSeconds "awaitTerminationSeconds"} property.
240251
*/
241252
private void awaitTerminationIfNecessary(ExecutorService executor) {
242-
if (this.awaitTerminationSeconds > 0) {
253+
if (this.awaitTerminationMillis > 0) {
243254
try {
244-
if (!executor.awaitTermination(this.awaitTerminationSeconds, TimeUnit.SECONDS)) {
255+
if (!executor.awaitTermination(this.awaitTerminationMillis, TimeUnit.MILLISECONDS)) {
245256
if (logger.isWarnEnabled()) {
246257
logger.warn("Timed out while waiting for executor" +
247258
(this.beanName != null ? " '" + this.beanName + "'" : "") + " to terminate");

0 commit comments

Comments
 (0)