You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gi...@apache.org on 2004/11/06 14:54:32 UTC
svn commit: rev 56765 - in cocoon/trunk/src: java/org/apache/cocoon/components/thread webapp/WEB-INF
Author: giacomo
Date: Sat Nov 6 05:54:31 2004
New Revision: 56765
Modified:
cocoon/trunk/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java
cocoon/trunk/src/java/org/apache/cocoon/components/thread/DefaultThreadFactory.java
cocoon/trunk/src/java/org/apache/cocoon/components/thread/RunnableManager.java
cocoon/trunk/src/java/org/apache/cocoon/components/thread/ThreadFactory.java
cocoon/trunk/src/webapp/WEB-INF/cocoon.xconf
Log:
after skimming the code Ithink we are in need of daemon mode too
Modified: cocoon/trunk/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java Sat Nov 6 05:54:31 2004
@@ -44,10 +44,11 @@
* <thread-pools>
* <thread-pool>
* <name>default</name>
- * <priority>NORM</priority> <!-- MIN | NORM | MAX -->
- * <queue-size>-1</queue-size> <!-- <0 unbounded; ==0 no queue -->
- * <max-pool-size>-1</max-pool-size> <!-- ≤0 unbounded -->
- * <min-pool-size>2</min-pool-size> <!-- ≤0 not allowed -->
+ * <priority>NORM</priority>
+ * <daemon>false</daemon>
+ * <queue-size>-1</queue-size>
+ * <max-pool-size>-1</max-pool-size>
+ * <min-pool-size>2</min-pool-size>
* <keep-alive-time-ms>20000</keep-alive-time-ms>
* <block-policy>RUN</block-policy>
* <shutdown-graceful>false</shutdown-graceful>
@@ -56,6 +57,13 @@
* </thread-pools>
* </pre>
* </p>
+ *
+ * <p>
+ * Have a look at
+ * http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/PooledExecutor.html,
+ * {@link EDU.oswego.cs.dl.util.concurrent.PooledExecutor} or the cocoon.xconf
+ * file for more information.
+ * </p>
*
* @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati</a>
* @version $Id$
@@ -83,6 +91,9 @@
/** The default thread priority */
public static final String DEFAULT_THREAD_PRIORITY = "NORM";
+ /** The default daemon mode */
+ public static final boolean DEFAULT_DAEMON_MODE = false;
+
/** The default keep alive time */
public static final long DEFAULT_KEEP_ALIVE_TIME = 60000L;
@@ -152,6 +163,7 @@
msg.append( ",max-pool-size=" ).append( pool.getMaximumPoolSize( ) );
msg.append( ",min-pool-size=" ).append( pool.getMinimumPoolSize( ) );
msg.append( ",priority=" ).append( pool.getPriority( ) );
+ msg.append( ",isDaemon=" ).append( ( (ThreadFactory)pool.getThreadFactory( ) ).isDaemon( ) );
msg.append( ",keep-alive-time-ms=" ).append( pool.getKeepAliveTime( ) );
msg.append( ",block-policy=\"" ).append( pool.getBlockPolicy( ) );
msg.append( "\",shutdown-wait-time-ms=" ).append( pool.getShutdownWaitTimeMs( ) );
@@ -165,6 +177,7 @@
.append( pool.getMaximumPoolSize( ) );
msg.append( ",min-pool-size=" ).append( pool.getMinimumPoolSize( ) );
msg.append( ",priority=" ).append( pool.getPriority( ) );
+ msg.append( ",isDaemon=" ).append( ( (ThreadFactory)pool.getThreadFactory( ) ).isDaemon( ) );
msg.append( ",keep-alive-time-ms=" ).append( pool.getKeepAliveTime( ) );
msg.append( ",block-policy=" ).append( pool.getBlockPolicy( ) );
msg.append( ",shutdown-wait-time-ms=" ).append( pool.getShutdownWaitTimeMs( ) );
@@ -182,7 +195,7 @@
createPool( DEFAULT_THREADPOOL_NAME, DEFAULT_QUEUE_SIZE,
DEFAULT_MAX_POOL_SIZE, DEFAULT_MIN_POOL_SIZE,
getPriority( DEFAULT_THREAD_PRIORITY ),
- DEFAULT_KEEP_ALIVE_TIME,
+ DEFAULT_DAEMON_MODE, DEFAULT_KEEP_ALIVE_TIME,
DefaultThreadPool.POLICY_DEFAULT,
DEFAULT_SHUTDOWN_GRACEFUL, DEFAULT_SHUTDOWN_WAIT_TIME );
}
@@ -198,6 +211,8 @@
* @param priority The priority of threads created by this pool. This is
* one of {@link Thread#MIN_PRIORITY}, {@link
* Thread#NORM_PRIORITY}, or {@link Thread#MAX_PRIORITY}
+ * @param isDaemon Whether or not thread from the pool should run in daemon
+ * mode
* @param keepAliveTime How long should a thread be alive for new work to
* be done before it is GCed
* @param blockPolicy What's the blocking policy is resources are exhausted
@@ -211,14 +226,15 @@
final int maxPoolSize,
final int minPoolSize,
final int priority,
+ final boolean isDaemon,
final long keepAliveTime,
final String blockPolicy,
final boolean shutdownGraceful,
final int shutdownWaitTime )
{
createPool( new DefaultThreadPool( ), name, queueSize, maxPoolSize,
- minPoolSize, priority, keepAliveTime, blockPolicy,
- shutdownGraceful, shutdownWaitTime );
+ minPoolSize, priority, isDaemon, keepAliveTime,
+ blockPolicy, shutdownGraceful, shutdownWaitTime );
}
/**
@@ -230,6 +246,8 @@
* @param priority The priority of threads created by this pool. This is
* one of {@link Thread#MIN_PRIORITY}, {@link
* Thread#NORM_PRIORITY}, or {@link Thread#MAX_PRIORITY}
+ * @param isDaemon Whether or not thread from the pool should run in daemon
+ * mode
* @param keepAliveTime How long should a thread be alive for new work to
* be done before it is GCed
* @param blockPolicy What's the blocking policy is resources are exhausted
@@ -244,6 +262,7 @@
final int maxPoolSize,
final int minPoolSize,
final int priority,
+ final boolean isDaemon,
final long keepAliveTime,
final String blockPolicy,
final boolean shutdownGraceful,
@@ -253,7 +272,7 @@
final String name = "anon-" + pool.hashCode( );
return createPool( pool, name, queueSize, maxPoolSize, minPoolSize,
- priority, keepAliveTime, blockPolicy,
+ priority, isDaemon, keepAliveTime, blockPolicy,
shutdownGraceful, shutdownWaitTime );
}
@@ -562,6 +581,8 @@
final String priority =
config.getChild( "priority" ).getValue( DEFAULT_THREAD_PRIORITY );
+ final boolean isDaemon =
+ config.getChild( "daemon" ).getValueAsBoolean( DEFAULT_DAEMON_MODE );
final long keepAliveTime =
config.getChild( "keep-alive-time-ms" ).getValueAsLong( DEFAULT_KEEP_ALIVE_TIME );
final String blockPolicy =
@@ -573,8 +594,8 @@
return createPool( new DefaultThreadPool( ), name, queueSize,
maxPoolSize, minPoolSize, getPriority( priority ),
- keepAliveTime, blockPolicy, shutdownGraceful,
- shutdownWaitTime );
+ isDaemon, keepAliveTime, blockPolicy,
+ shutdownGraceful, shutdownWaitTime );
}
/**
@@ -588,6 +609,8 @@
* @param priority The priority of threads created by this pool. This is
* one of {@link Thread#MIN_PRIORITY}, {@link
* Thread#NORM_PRIORITY}, or {@link Thread#MAX_PRIORITY}
+ * @param isDaemon Whether or not thread from the pool should run in daemon
+ * mode
* @param keepAliveTime How long should a thread be alive for new work to
* be done before it is GCed
* @param blockPolicy What's the blocking policy is resources are exhausted
@@ -604,6 +627,7 @@
final int maxPoolSize,
final int minPoolSize,
final int priority,
+ final boolean isDaemon,
final long keepAliveTime,
final String blockPolicy,
final boolean shutdownGraceful,
@@ -629,6 +653,7 @@
}
factory.setPriority( priority );
+ factory.setDaemon( isDaemon );
pool.setThreadFactory( factory );
pool.setQueue( queueSize );
pool.setMaximumPoolSize( maxPoolSize );
Modified: cocoon/trunk/src/java/org/apache/cocoon/components/thread/DefaultThreadFactory.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/thread/DefaultThreadFactory.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/thread/DefaultThreadFactory.java Sat Nov 6 05:54:31 2004
@@ -15,7 +15,6 @@
*/
package org.apache.cocoon.components.thread;
-
/**
* This class is responsible to create new Thread instances to run a command.
*
@@ -27,11 +26,40 @@
{
//~ Instance fields --------------------------------------------------------
+ /** The daemon mode */
+ private boolean m_isDaemon = false;
+
/** The priority of newly created Threads */
private int m_priority = Thread.NORM_PRIORITY;
+ //~ Methods ----------------------------------------------------------------
+
+ /**
+ * Set the isDaemon property
+ *
+ * @param isDaemon Whether or not new <code>Thread</code> should run as
+ * daemons.
+ */
+ public void setDaemon( boolean isDaemon )
+ {
+ m_isDaemon = isDaemon;
+ }
+
/**
- * @see org.apache.cocoon.components.thread.ThreadFactory#setPriority(int)
+ * Get the isDaemon property
+ *
+ * @return Whether or not new <code>Thread</code> will run as daemons.
+ */
+ public boolean isDaemon( )
+ {
+ return m_isDaemon;
+ }
+
+ /**
+ * Set the priority newly created <code>Thread</code>s should have
+ *
+ * @param priority One of {@link Thread#MIN_PRIORITY}, {@link
+ * Thread#NORM_PRIORITY}, {@link Thread#MAX_PRIORITY}
*/
public void setPriority( final int priority )
{
@@ -43,15 +71,29 @@
}
}
- //~ Methods ----------------------------------------------------------------
+ /**
+ * Get the priority newly created <code>Thread</code>s will have
+ *
+ * @return One of {@link Thread#MIN_PRIORITY}, {@link
+ * Thread#NORM_PRIORITY}, {@link Thread#MAX_PRIORITY}
+ */
+ public int getPriority( )
+ {
+ return m_priority;
+ }
/**
- * @see EDU.oswego.cs.dl.util.concurrent.ThreadFactory#newThread(java.lang.Runnable)
+ * Create a new Thread for Runnable
+ *
+ * @param command The {@link Runnable}
+ *
+ * @return A new Thread instance
*/
public Thread newThread( final Runnable command )
{
final Thread thread = new Thread( command );
thread.setPriority( m_priority );
+ thread.setDaemon( m_isDaemon );
return thread;
}
Modified: cocoon/trunk/src/java/org/apache/cocoon/components/thread/RunnableManager.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/thread/RunnableManager.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/thread/RunnableManager.java Sat Nov 6 05:54:31 2004
@@ -41,6 +41,8 @@
* @param priority The priority of threads created by this pool. This is
* one of {@link Thread#MIN_PRIORITY}, {@link
* Thread#NORM_PRIORITY}, or {@link Thread#MAX_PRIORITY}
+ * @param isDaemon Whether or not thread from the pool should run in daemon
+ * mode
* @param keepAliveTime How long should a thread be alive for new work to
* be done before it is GCed
* @param blockPolicy What's the blocking policy is resources are exhausted
@@ -54,6 +56,7 @@
int maxPoolSize,
int minPoolSize,
int priority,
+ final boolean isDaemon,
long keepAliveTime,
String blockPolicy,
boolean shutdownGraceful,
@@ -68,6 +71,8 @@
* @param priority The priority of threads created by this pool. This is
* one of {@link Thread#MIN_PRIORITY}, {@link
* Thread#NORM_PRIORITY}, or {@link Thread#MAX_PRIORITY}
+ * @param isDaemon Whether or not thread from the pool should run in daemon
+ * mode
* @param keepAliveTime How long should a thread be alive for new work to
* be done before it is GCed
* @param blockPolicy What's the blocking policy is resources are exhausted
@@ -82,6 +87,7 @@
int maxPoolSize,
int minPoolSize,
int priority,
+ final boolean isDaemon,
long keepAliveTime,
String blockPolicy,
boolean shutdownGraceful,
Modified: cocoon/trunk/src/java/org/apache/cocoon/components/thread/ThreadFactory.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/thread/ThreadFactory.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/thread/ThreadFactory.java Sat Nov 6 05:54:31 2004
@@ -22,17 +22,40 @@
* @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati</a>
* @version CVS $Id$
*/
-public interface ThreadFactory extends EDU.oswego.cs.dl.util.concurrent.ThreadFactory
+public interface ThreadFactory
+ extends EDU.oswego.cs.dl.util.concurrent.ThreadFactory
{
//~ Methods ----------------------------------------------------------------
/**
+ * Set the daemon mode of created <code>Thread</code>s should have
+ *
+ * @param isDaemon Whether new {@link Thread}s should run as daemons.
+ */
+ void setDaemon( boolean isDaemon );
+
+ /**
+ * Get the daemon mode created <code>Thread</code>s will have
+ *
+ * @return Whether new {@link Thread}s should run as daemons.
+ */
+ boolean isDaemon( );
+
+ /**
* Set the priority newly created <code>Thread</code>s should have
*
* @param priority One of {@link Thread#MIN_PRIORITY}, {@link
* Thread#NORM_PRIORITY}, {@link Thread#MAX_PRIORITY}
*/
void setPriority( int priority );
+
+ /**
+ * Get the priority newly created <code>Thread</code>s will have
+ *
+ * @return One of {@link Thread#MIN_PRIORITY}, {@link
+ * Thread#NORM_PRIORITY}, {@link Thread#MAX_PRIORITY}
+ */
+ int getPriority( );
/**
* Create a new Thread for a {@link Runnable} command
Modified: cocoon/trunk/src/webapp/WEB-INF/cocoon.xconf
==============================================================================
--- cocoon/trunk/src/webapp/WEB-INF/cocoon.xconf (original)
+++ cocoon/trunk/src/webapp/WEB-INF/cocoon.xconf Sat Nov 6 05:54:31 2004
@@ -575,6 +575,8 @@
| MIN: corresponds to Thread#MIN_PRIORITY
| NORM: corresponds to Thread#NORM_PRIORITY (default)
| MAX: corresponds to Thread#MAX_PRIORITY
+ | daemon: whether newly created Threads should run in
+ | daemon mode or not. Default to false.
| queue-size: optional size of a queue to hold Runnables if the
| pool is full. Possible values are:
| less than 0: unbounded (default)
@@ -626,6 +628,7 @@
<thread-pool>
<name>default</name>
<priority>NORM</priority>
+ <daemon>false</daemon>
<queue-size>-1</queue-size>
<max-pool-size>5</max-pool-size>
<min-pool-size>5</min-pool-size>