This is an automated email from the ASF dual-hosted git repository. mgrigorov pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit fab97c761b07e02fd79b5a932e4d7f4a38f1a084 Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> AuthorDate: Tue Aug 25 14:36:23 2020 +0300 Change forcedRemainingCapacity from Integer to int No need to create object (or use Integer cache) and cast it to primitive int. 'forcedRemainingCapacity' can do its job with a primitive int, since Queue's capacity cannot be negative value --- java/org/apache/tomcat/util/threads/TaskQueue.java | 14 +++++++++----- .../org/apache/tomcat/util/threads/ThreadPoolExecutor.java | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/java/org/apache/tomcat/util/threads/TaskQueue.java b/java/org/apache/tomcat/util/threads/TaskQueue.java index 600fe5b..cdd0bc2 100644 --- a/java/org/apache/tomcat/util/threads/TaskQueue.java +++ b/java/org/apache/tomcat/util/threads/TaskQueue.java @@ -35,8 +35,8 @@ public class TaskQueue extends LinkedBlockingQueue<Runnable> { private transient volatile ThreadPoolExecutor parent = null; // No need to be volatile. This is written and read in a single thread - // (when stopping a context and firing the listeners) - private Integer forcedRemainingCapacity = null; + // (when stopping a context and firing the listeners) + private int forcedRemainingCapacity = -1; public TaskQueue() { super(); @@ -105,18 +105,22 @@ public class TaskQueue extends LinkedBlockingQueue<Runnable> { @Override public int remainingCapacity() { - if (forcedRemainingCapacity != null) { + if (forcedRemainingCapacity > DEFAULT_FORCED_REMAINING_CAPACITY) { // ThreadPoolExecutor.setCorePoolSize checks that // remainingCapacity==0 to allow to interrupt idle threads // I don't see why, but this hack allows to conform to this // "requirement" - return forcedRemainingCapacity.intValue(); + return forcedRemainingCapacity; } return super.remainingCapacity(); } - public void setForcedRemainingCapacity(Integer forcedRemainingCapacity) { + public void setForcedRemainingCapacity(int forcedRemainingCapacity) { this.forcedRemainingCapacity = forcedRemainingCapacity; } + void resetForcedRemainingCapacity() { + this.forcedRemainingCapacity = DEFAULT_FORCED_REMAINING_CAPACITY; + } + } diff --git a/java/org/apache/tomcat/util/threads/ThreadPoolExecutor.java b/java/org/apache/tomcat/util/threads/ThreadPoolExecutor.java index 74ec4a0..42db3df 100644 --- a/java/org/apache/tomcat/util/threads/ThreadPoolExecutor.java +++ b/java/org/apache/tomcat/util/threads/ThreadPoolExecutor.java @@ -197,7 +197,7 @@ public class ThreadPoolExecutor extends java.util.concurrent.ThreadPoolExecutor // checks that queue.remainingCapacity()==0. I did not understand // why, but to get the intended effect of waking up idle threads, I // temporarily fake this condition. - taskQueue.setForcedRemainingCapacity(Integer.valueOf(0)); + taskQueue.setForcedRemainingCapacity(0); } // setCorePoolSize(0) wakes idle threads @@ -209,7 +209,7 @@ public class ThreadPoolExecutor extends java.util.concurrent.ThreadPoolExecutor if (taskQueue != null) { // ok, restore the state of the queue and pool - taskQueue.setForcedRemainingCapacity(null); + taskQueue.resetForcedRemainingCapacity(); } this.setCorePoolSize(savedCorePoolSize); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org