公司需要改进线程池,据说apache有现成的线程池类库?请问谁有这方面的资料?谢谢

解决方案 »

  1.   

    /*
     * 创建日期 2006-4-22
     * 项目名称 Library.Core
     * 所在包名 jp.kernel.newage.lib.util.concurrent
     * 版权所有 (C) 1996-2006 困了
     */
    package jp.kernel.newage.lib.util.concurrent;import java.io.Serializable;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ThreadFactory;/**
     * 线程管理模块
     * 
     * @author 困了
     * @version 1.0.0
     */
    public abstract class KThreadManager implements Serializable { /** 服务是否已经开始 */
    protected static boolean blnStarted; /** 默认的线程执行服务 */
    protected static ExecutorService etsContainer; /** 默认的线程工厂 */
    protected static ThreadFactory tdfContainer; /**
     * 获取默认的线程执行服务
     * 
     * @return 默认的线程执行服务
     */
    protected static synchronized ExecutorService getExecutorService() {
    return null != etsContainer ? etsContainer : (etsContainer = Executors
    .newCachedThreadPool(getThreadFactory()));
    } /**
     * 获取默认的线程工厂
     * 
     * @return 默认的线程工厂
     */
    protected static synchronized ThreadFactory getThreadFactory() {
    return null != tdfContainer ? tdfContainer : (tdfContainer = Executors
    .defaultThreadFactory());
    } /**
     * 获取一个新的线程
     * 
     * @param r
     *            线程执行类
     * @return 新的线程
     */
    public static Thread newThread(Runnable r) {
    return getThreadFactory().newThread(r);
    } /**
     * 停止服务
     */
    public static synchronized void shutdown() {
    if (blnStarted) {
    try {
    getExecutorService().shutdown();
    } finally {
    etsContainer = null;
    blnStarted = false;
    }
    }
    } /**
     * 执行并提交一个线程任务
     * 
     * @param r
     *            线程执行类
     */
    public static synchronized void submit(Runnable r) {
    try {
    getExecutorService().submit(r);
    } finally {
    blnStarted = true;
    }
    }}
      

  2.   

    java.util.concurrent 已经封装得很好了, 上面的代码封装的有什么意义啊
    而且几乎每个方法都是synchronized, 画蛇添足.
    等学学多线程再来发表代码吧.
      

  3.   

    有道理
    现在JDK1.5里面已经封装了线程池的操作
    它就在包java.util.concurrent下面