美文网首页
05-线程池ThreadPoolExecutor

05-线程池ThreadPoolExecutor

作者: ONE_PIECES | 来源:发表于2019-04-19 15:05 被阅读0次

    java.util.concurrent包中Executors类中,线程池的工厂类,用来生产线程池

    newFixedThreadPool(int nThreads, ThreadFactory threadFactory)    
    

    使用步骤

    1. 使用线程池的工厂类Executors里面提供的静态方法newFixedThreadPool()生产一个线程池
    解析:
      public static ExecutorService newFixedThreadPool(int nThreads) {
            return new ThreadPoolExecutor(nThreads, nThreads,
                                          0L, TimeUnit.MILLISECONDS,
                                          new LinkedBlockingQueue<Runnable>());
        }
    
    //解析 调用submit方法,执行的是父类AbstractExecutorService(实现了interface ExecutorService extends Executor)
    的submit方法    
     public Future<?> submit(Runnable task) {
            if (task == null) throw new NullPointerException();
            RunnableFuture<Void> ftask = newTaskFor(task, null);
            execute(ftask);
            return ftask;
        }
    这个execute方法时顶级接口Executor中的方法,ThreadPoolExecutor复写了这个方法,执行自己的 
    该方法的主要内容:
        1. 当新的任务到来,如果工作线程数小于核心线程数,则添加新的线程
        2. 工作线程数大于等于核心线程数,则将任务放入缓存任务队列  
        3. 任务入队失败,说明任务缓存任务队列已满,尝试添加新的线程处理,如果添加失败则以某种方式拒绝任务
    
    1. 创建一个类,是吸纳Runnable接口,并重写run方法,编写线程要执行的任务
    2. 调用ExecutorService(该接口继承Executor)的submit,线程任务作为参数传递,返回一个Future,成功完成是,Futureget方法会返回null
    3. ExecutorServiceshutdown可以销毁线程池

    相关文章

      网友评论

          本文标题:05-线程池ThreadPoolExecutor

          本文链接:https://www.haomeiwen.com/subject/kenqgqtx.html