Java 线程池相关概念

作者: kevenZheng | 来源:发表于2018-07-11 15:24 被阅读24次

1. 优点:
(1) 提高资源利用率,线程池可以重复利用已经创建了的线程。(2) 提高响应速度,当线程池中线程数量没有超过最大上限的时候,有些线程出于等待分配任务状态,当任务来到时,可以直接执行,无需创建操作。(3) 具有可管理性,减少频繁创建销毁线程带来的系统开销。

2. 分类:
(1) FixedThreadPool
这个实例会复用固定数量的线程处理一个共享的无边界队列,任何时间点,会有最多固定数量的线程出于活动状态,当所有线程都处于活动状态时,当有新的任务提交过来,会在队列中排队,知道有线程空闲。如果有任何线程在执行任务过程中出现错误终止,新的线程会继续执行其剩余的任务。所有线程会一直存在于线程池中,直到显示的执行 ExecutorService.shutdown() 关闭。

(2) CacheThreadPool
它是线程数量不等的线程池,只有非核心线程,并且数量很大,当有新任务进来时,如果所有线程都处于活动状态,则新创建线程执行任务并放到线程池中,否则则使用空闲状态的线程执行任务。当线程处于空闲状态 60s 后,则会被中止并从缓存中移除。因此,线程池在长时间空闲后不会消耗任何资源。

(3)SingleThreadPool
它只有一个核心线程,它的所有任务都在同一个线程中按顺序执行,并处理了线程同步问题。如果单个线程在执行任务过程中出现错误中止,则会有新的线程代替执行后续的任务。任何时候都不会多于一个线程处于活动状态。

(4) ScheduledThreadPool
它的核心线程数量是固定的,非核心线程数量没有限制,当非核心线程闲置时,会立即回收。这类线程主要用于执行定时任务和具有定时周期的任务。

FixedThreadPool 与 CachedThreadPool 特性对比

特性 FixedThreadPool CachedThreadPool
重用 FixedThreadPool 与 CacheThreadPool差不多,也是能 reuse 就用,但不能随时建新的线程 缓存型池子,先查看池中有没有以前建立的线程,如果有,就 reuse ;如果没有,就建一个新的线程加入池中
池大小 可指定 nThreads,固定数量 可增长,最大值 Integer.MAX_VALUE
队列大小 无限制 无限制
超时 无 IDLE 默认 60 秒 IDLE
使用场景 所以 FixedThreadPool 多数针对一些很稳定很固定的正规并发线程,多用于服务器 大量短生命周期的异步任务
结束 不会自动销毁 注意,放入 CachedThreadPool 的线程不必担心其结束,超过 TIMEOUT 不活动,其会自动被终止。

相关文章

  • Java 线程池相关概念

    1. 优点:(1) 提高资源利用率,线程池可以重复利用已经创建了的线程。(2) 提高响应速度,当线程池中线程数量没...

  • Android 线程池的封装

    GlobalThreadPools.java: 调用: 线程池线程池概念来源于Java中的Executor,它是一...

  • 万字长文:带你透彻理解“线程池”

    目标 【理解】线程池的基本概念 【理解】线程池工作原理 【掌握】自定义线程池 【应用】java内置线程池 【应用】...

  • Java多线程之线程池深入讲解

    1 线程池介绍 1.1 线程池概念 Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Jav...

  • Java 线程池

    Java线程池是java cocurrent包下提供的类,使用非常方便。本文希望整理下Java 线程池相关的知识以...

  • 阿里巴巴Java高级岗必问面试题总结:JVM+多线程+网络+Re

    阿里巴巴Java高级岗必问面试题总结 一、Java多线程相关 线程池的原理,为什么要创建线程池?创建线程池的方式;...

  • 线程池学习

    Java线程池相关类 Executor定义了最常见的线程池接口,execute(Runnable command)...

  • 线程池-相关概念

    如果你要开启线程执行任务,你会怎么做? 开启一个线程,然后串行执行所有任务 一个任务开启一个线程,任务不会再等待,...

  • 线程池原理剖析&锁的深度化

    线程池原理剖析 Java中开辟出了一种管理线程的概念,这个概念叫做线程池,可以方便的管理线程,减少内存消耗。 如何...

  • 8.线程池-1

    一、线程池概念: 1. 什么是线程池? jdk1.5之后java.util.concurrent.Executor...

网友评论

    本文标题:Java 线程池相关概念

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