我是靠谱客的博主 危机宝马,最近开发中收集的这篇文章主要介绍Java多线程之线程池源码(线程池种类),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

多线程之线程池

  • 创建固定大小的线程

    public static ExecutorService newFixedThreadPool(int nThreads) {
    return new ThreadPoolExecutor(nThreads, nThreads,
    0L, TimeUnit.MILLISECONDS,
    new LinkedBlockingQueue());
    }

  • 创建缓存线程池

    public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
    60L, TimeUnit.SECONDS,
    new SynchronousQueue());
    }

    • 用线程池创建定时器

      public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) {
      return new ScheduledThreadPoolExecutor(corePoolSize);
      }
      public ScheduledThreadPoolExecutor(int corePoolSize) {
      super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS,
      new DelayedWorkQueue());
      }
      public ThreadPoolExecutor(int corePoolSize,
      int maximumPoolSize,
      long keepAliveTime,
      TimeUnit unit,
      BlockingQueue workQueue) {
      this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
      Executors.defaultThreadFactory(), defaultHandler);
      }

    • 创建单一线程池

      public static ExecutorService newSingleThreadExecutor() {
      return new FinalizableDelegatedExecutorService
      (new ThreadPoolExecutor(1, 1,
      0L, TimeUnit.MILLISECONDS,
      new LinkedBlockingQueue()));
      }

    解释;通过分析源码我们知道,最终都会调用 ThreadPoolExecutor 的构造方法来创建线程池,ThreadPoolExecutor 是ExecutorService(执行者服务)的默认实现类,是Executor(执行者接口)的子接口,目的就是就是通过execute()方法将任务提交给执行者,或者通过submit()方法将任务提交给执行者(底层还是调用execute())

Future<> submit(Runnable task);
public Future<> submit(Runnable task) {
if (task == null) throw new NullPointerException();
RunnableFuture ftask = newTaskFor(task, null);
execute(ftask);
return ftask;
}

最后

以上就是危机宝马为你收集整理的Java多线程之线程池源码(线程池种类)的全部内容,希望文章能够帮你解决Java多线程之线程池源码(线程池种类)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部