|
1 | 1 | /*
|
2 |
| - * Copyright 2002-2018 the original author or authors. |
| 2 | + * Copyright 2002-2020 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
@@ -59,7 +59,7 @@ public abstract class ExecutorConfigurationSupport extends CustomizableThreadFac
|
59 | 59 |
|
60 | 60 | private boolean waitForTasksToCompleteOnShutdown = false;
|
61 | 61 |
|
62 |
| - private int awaitTerminationSeconds = 0; |
| 62 | + private long awaitTerminationMillis = 0; |
63 | 63 |
|
64 | 64 | @Nullable
|
65 | 65 | private String beanName;
|
@@ -145,9 +145,20 @@ public void setWaitForTasksToCompleteOnShutdown(boolean waitForJobsToCompleteOnS
|
145 | 145 | * @see java.util.concurrent.ExecutorService#awaitTermination
|
146 | 146 | */
|
147 | 147 | public void setAwaitTerminationSeconds(int awaitTerminationSeconds) {
|
148 |
| - this.awaitTerminationSeconds = awaitTerminationSeconds; |
| 148 | + this.awaitTerminationMillis = awaitTerminationSeconds * 1000; |
149 | 149 | }
|
150 | 150 |
|
| 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 | + |
151 | 162 | @Override
|
152 | 163 | public void setBeanName(String name) {
|
153 | 164 | this.beanName = name;
|
@@ -239,9 +250,9 @@ protected void cancelRemainingTask(Runnable task) {
|
239 | 250 | * {@link #setAwaitTerminationSeconds "awaitTerminationSeconds"} property.
|
240 | 251 | */
|
241 | 252 | private void awaitTerminationIfNecessary(ExecutorService executor) {
|
242 |
| - if (this.awaitTerminationSeconds > 0) { |
| 253 | + if (this.awaitTerminationMillis > 0) { |
243 | 254 | try {
|
244 |
| - if (!executor.awaitTermination(this.awaitTerminationSeconds, TimeUnit.SECONDS)) { |
| 255 | + if (!executor.awaitTermination(this.awaitTerminationMillis, TimeUnit.MILLISECONDS)) { |
245 | 256 | if (logger.isWarnEnabled()) {
|
246 | 257 | logger.warn("Timed out while waiting for executor" +
|
247 | 258 | (this.beanName != null ? " '" + this.beanName + "'" : "") + " to terminate");
|
|
0 commit comments