五种常用线程池的特征和作用

newCachedThreadPool

作用:创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们,并在需要时使用提供的 ThreadFactory 创建新线程。
特征:
(1)线程池中数量没有固定,可达到最大值(Interger. MAX_VALUE)
(2)线程池中的线程可进行缓存重复利用和回收(回收默认时间为1分钟)
(3)当线程池中,没有可用线程,会重新创建一个线程

newFixedThreadPool

作用:创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。在任意点,在大多数 nThreads 线程会处于处理任务的活动状态。如果在所有线程处于活动状态时提交附加任务,则在有可用线程之前,附加任务将在队列中等待。如果在关闭前的执行期间由于失败而导致任何线程终止,那么一个新线程将代替它执行后续的任务(如果需要)。在某个线程被显式地关闭之前,池中的线程将一直存在。
特征:
(1)线程池中的线程处于一定的量,可以很好的控制线程的并发量
(2)线程可以重复被使用,在显示关闭之前,都将一直存在
(3)超出一定量的线程被提交时候需在队列中等待

newSingleThreadExecutor

作用:创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。(注意,如果因为在关闭前的执行期间出现失败而终止了此单个线程,那么如果需要,一个新线程将代替它执行后续的任务)。可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的。与其他等效的 newFixedThreadPool(1) 不同,可保证无需重新配置此方法所返回的执行程序即可使用其他的线程。
特征:
(1)线程池中最多执行1个线程,之后提交的线程活动将会排在队列中以此执行

newScheduledThread

作用: 创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
特征:
(1)线程池中具有指定数量的线程,即便是空线程也将保留
(2)可定时或者延迟执行线程活动

newSingleScheduledThread

作用: 创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。
特征:
(1)线程池中最多执行1个线程,之后提交的线程活动将会排在队列中以此执行
(2)可定时或者延迟执行线程活动

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线程池是一种常见的并发编程技术,用于管理和复用线程。它主要用于提高多线程程序的性能和资源利用率,以及控制并发线程的数量。 线程池作用: 1. 降低线程创建和销毁的开销:线程的创建和销毁是一项开销较高的操作,线程池可以重用已存在的线程,避免频繁地创建和销毁线程,从而减少了开销。 2. 提高系统的并发性能:线程池可以根据系统资源和负载情况自动调整线程数量,合理分配系统资源,提高并发处理能力。 3. 控制并发线程数量:通过设置线程池的参数,可以限制同时执行的任务数量,避免系统资源被过度占用而导致系统崩溃或响应变慢。 线程池的实现原理: 1. 线程池管理器:线程池由一个线程池管理器负责创建、初始化和维护线程池。它负责监控线程池中的线程数量、任务队列和线程状态等。 2. 任务队列:线程池通常使用队列来保存待执行的任务。当有新的任务提交到线程池时,先将任务放入任务队列中,然后由空闲的线程从队列中取出任务并执行。 3. 线程池大小:线程池的大小可以根据系统资源和负载情况进行动态调整。一般来说,线程池的大小应根据系统的CPU核心数、内存大小和任务的性质来设定。 4. 线程工厂:线程池使用线程工厂来创建新的线程。线程工厂负责创建线程,并可以设置线程的名称、优先级和其他属性。 5. 拒绝策略:当任务队列已满并且线程池中的线程数量达到上限时,新提交的任务可能会被拒绝执行。这时可以使用一种拒绝策略来处理这些被拒绝的任务,如抛出异常、丢弃任务或等待一段时间再尝试提交等。 总之,线程池通过维护一组可重用的线程和任务队列,提供了一种高效的并发编程方式。它能够优化系统资源的使用,提高程序的性能和可伸缩性,并且可以通过合理配置参数来控制并发线程的数量,从而更好地适应不同的应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值