线程池的几种实现方式,线程池的实现原理和实现方法

  线程池的几种实现方式,线程池的实现原理和实现方法

  线程池可以通过以下方式实现:

  执行器目前提供5种不同的线程池创建配置:

  1、newCachedThreadPool()

  它是一个线程池,用于处理大量的短期工作任务。它有几个与众不同的特点:它会尝试缓存线程并重用它们,当未缓存的线程可用时,它会创建新的工作线程;如果线程空闲时间超过60秒,则终止线程并移除缓存;当长时间空闲时,这个线程池不会消耗任何资源。它在内部使用SynchronousQueue作为工作队列。

  视频教程推荐:java视频教程

  2、newFixedThreadPool(int nThreads)

  重用指定数量的线程(nThreads),在此之后使用一个无限制的工作队列。在任何时候,最多有n个线程处于活动状态。这意味着,如果任务数量超过活动线程数量,它将等待空闲线程出现在工作队列中;如果工作线程退出,将创建一个新的工作线程来弥补指定数量的n个线程。

  3、newSingleThreadExecutor()

  它的特点是工作线程的数量被限制为1,并且它操作的是一个无界的工作队列,所以它保证所有的任务都是顺序执行的,并且最多会有一个任务是活动的,并且不允许用户改变线程池实例,所以它可以避免改变线程的数量。

  4、newSingleThreadScheduledExecutor()和newScheduledThreadPool(int corePoolSize)

  创建的是ScheduledExecutorService,它可以执行计划的或定期的工作调度。区别在于单个工作线程还是多个工作线程。

  5、newWorkStealingPool(int parallelism)

  这是一个经常被忽视的线程池。Java 8刚好加入了这种创建方式,它会在内部构建ForkJoinPool,在不保证处理顺序的情况下,使用偷功算法并行处理任务。

  分享相关文章和教程:java快速入门以上是线程池的实现细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: