Author: remm Date: Fri Nov 9 13:44:39 2018 New Revision: 1846245 URL: http://svn.apache.org/viewvc?rev=1846245&view=rev Log: Add a daemon flag for the utility threads. Those threads are not bad candidates for non daemon by default, given they are managed by an executor.
Modified: tomcat/trunk/java/org/apache/catalina/core/StandardService.java tomcat/trunk/webapps/docs/config/service.xml Modified: tomcat/trunk/java/org/apache/catalina/core/StandardService.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardService.java?rev=1846245&r1=1846244&r2=1846245&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/StandardService.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/StandardService.java Fri Nov 9 13:44:39 2018 @@ -100,6 +100,11 @@ public class StandardService extends Lif protected int utilityThreads = 0; /** + * The utility threads daemon flag. + */ + protected boolean utilityThreadsAsDaemon = true; + + /** * Utility executor with scheduling capabilities. */ private ScheduledThreadPoolExecutor utilityExecutor = null; @@ -267,7 +272,8 @@ public class StandardService extends Lif utilityExecutor.setMaximumPoolSize(threads); } else { ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = - new ScheduledThreadPoolExecutor(1, new UtilityThreadFactory(getName() + "-utility-")); + new ScheduledThreadPoolExecutor(1, + new UtilityThreadFactory(getName() + "-utility-", utilityThreadsAsDaemon)); scheduledThreadPoolExecutor.setMaximumPoolSize(threads); scheduledThreadPoolExecutor.setKeepAliveTime(10, TimeUnit.SECONDS); scheduledThreadPoolExecutor.setRemoveOnCancelPolicy(true); @@ -278,6 +284,24 @@ public class StandardService extends Lif } + /** + * Get if the utility threads are daemon threads. + * @return the threads daemon flag + */ + public boolean getUtilityThreadsAsDaemon() { + return utilityThreadsAsDaemon; + } + + + /** + * Set the utility threads daemon flag. The default value is true. + * @param utilityThreadsAsDaemon the new thread daemon flag + */ + public void setUtilityThreadsAsDaemon(boolean utilityThreadsAsDaemon) { + this.utilityThreadsAsDaemon = utilityThreadsAsDaemon; + } + + // --------------------------------------------------------- Public Methods @@ -705,17 +729,19 @@ public class StandardService extends Lif private final ThreadGroup group; private final AtomicInteger threadNumber = new AtomicInteger(1); private final String namePrefix; + private final boolean daemon; - public UtilityThreadFactory(String namePrefix) { + public UtilityThreadFactory(String namePrefix, boolean daemon) { SecurityManager s = System.getSecurityManager(); group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup(); this.namePrefix = namePrefix; + this.daemon = daemon; } @Override public Thread newThread(Runnable r) { Thread thread = new Thread(group, r, namePrefix + threadNumber.getAndIncrement()); - thread.setDaemon(true); + thread.setDaemon(daemon); return thread; } } Modified: tomcat/trunk/webapps/docs/config/service.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/service.xml?rev=1846245&r1=1846244&r2=1846245&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/config/service.xml (original) +++ tomcat/trunk/webapps/docs/config/service.xml Fri Nov 9 13:44:39 2018 @@ -68,7 +68,7 @@ must be unique.</p> </attribute> - <attribute name="startStopThreads" required="false"> + <attribute name="utilityThreads" required="false"> <p>The number of threads this <strong>Service</strong> will use for various utility tasks, including recurring ones. The special value of 0 will result in the value of @@ -92,6 +92,12 @@ <attributes> + <attribute name="utilityThreadsAsDaemon" required="false"> + <p>Set the daemon flag value for the utility threads. The default value + is <code>true</code>. + </p> + </attribute> + </attributes> </subsection> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org