⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaultthreadmanager.java

📁 java 开发的邮件服务器平台。支持以下协议。 协议可以修改为自己的专门标识
💻 JAVA
字号:
/*********************************************************************** * Copyright (c) 1999-2004 The Apache Software Foundation.             * * All rights reserved.                                                * * ------------------------------------------------------------------- * * Licensed under the Apache License, Version 2.0 (the "License"); you * * may not use this file except in compliance with the License. You    * * may obtain a copy of the License at:                                * *                                                                     * *     http://www.apache.org/licenses/LICENSE-2.0                      * *                                                                     * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS,   * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or     * * implied.  See the License for the specific language governing       * * permissions and limitations under the License.                      * ***********************************************************************/package org.apache.james.util.thread;import java.util.HashMap;import org.apache.avalon.cornerstone.services.threads.ThreadManager;import org.apache.excalibur.threadcontext.ThreadContext;import org.apache.avalon.excalibur.thread.ThreadPool;import org.apache.avalon.framework.configuration.Configurable;import org.apache.avalon.framework.configuration.Configuration;import org.apache.avalon.framework.configuration.ConfigurationException;import org.apache.avalon.framework.component.Component;import org.apache.avalon.framework.logger.AbstractLogEnabled;/** * Default implementation of ThreadManager. * * @phoenix:block * @phoenix:service name="org.apache.avalon.cornerstone.services.threads.ThreadManager" * */public class DefaultThreadManager   extends AbstractLogEnabled   implements ThreadManager, Configurable, Component{    ///Map of thread pools for application       private HashMap m_threadPools = new HashMap();    /**     * Setup thread pools based on configuration data.     *     * @param configuration the configuration data     * @exception ConfigurationException if an error occurs     * @phoenix:configuration-schema type="relax-ng"     */       public void configure( final Configuration configuration )               throws ConfigurationException       {           ThreadContext threadContext = ThreadContext.getThreadContext();           if( null != threadContext )           {               threadContext = threadContext.duplicate();           }           final Configuration[] groups = configuration.getChildren( "thread-group" );           for( int i = 0; i < groups.length; i++ )           {               configureThreadPool( groups[ i ], threadContext );           }       }       private void configureThreadPool( final Configuration configuration,                                         final ThreadContext threadContext )               throws ConfigurationException       {           final String name = configuration.getChild( "name" ).getValue();           final int priority = configuration.getChild( "priority" ).getValueAsInteger( 5 );           final boolean isDaemon = configuration.getChild( "is-daemon" ).getValueAsBoolean( false );           final int minThreads = configuration.getChild( "min-threads" ).getValueAsInteger( 5 );           final int maxThreads = configuration.getChild( "max-threads" ).getValueAsInteger( 10 );           final int minSpareThreads = configuration.getChild( "min-spare-threads" ).                                       getValueAsInteger( maxThreads - minThreads );           try           {               final DefaultThreadPool threadPool =                   new DefaultThreadPool( name, minThreads, maxThreads, threadContext );               threadPool.setDaemon( isDaemon );               threadPool.enableLogging( getLogger() );               m_threadPools.put( name, threadPool );           }           catch( final Exception e )           {               final String message = "Error creating ThreadPool named " + name;               throw new ConfigurationException( message, e );           }       }    /**     * Retrieve a thread pool by name.     *     * @param name the name of thread pool     * @return the threadpool     * @exception IllegalArgumentException if the name of thread pool is     *            invalid or named pool does not exist     */       public ThreadPool getThreadPool( final String name )               throws IllegalArgumentException       {           final ThreadPool threadPool = (ThreadPool)m_threadPools.get( name );           if( null == threadPool )           {               final String message = "Unable to locate ThreadPool named " + name;               throw new IllegalArgumentException( message );           }           return threadPool;       }    /**     * Retrieve the default thread pool.     *     * @return the thread pool     */       public ThreadPool getDefaultThreadPool()       {           return getThreadPool( "default" );       }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -