美文网首页
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