线程池(ThreadPoolExecutor)

线程池是操作系统资源管理的重要手段,可以减少线程创建和销毁的开销。本文介绍了线程池的基本概念,如何创建线程池,特别是避免使用`Executors`类库的静态方法,并详细解析了`ThreadPoolExecutor`的构造参数和线程池的工作行为。遵循最佳实践,创建线程池时需考虑核心线程数、最大线程数、工作队列类型、拒绝策略等因素,确保线程池可控且避免内存耗尽。
摘要由CSDN通过智能技术生成

目录

    什么是线程池?

怎么创建线程池?

ThreadPoolExecutor

线程池默认工作行为


什么是线程池?

    线程是操作系统进行资源分配和任务调度的最小单位,是计算机的宝贵资源,new thread(),调用start()方法java线程在创建和销毁的过程中消耗的资源是比较大的,为了减少在线程创建和销毁过程中的资源消耗就要实现线程的复用。在程序开发中池化技术是一种不错的复用方式,例如线程池、连接池、内存池等。我们会预先创建好一些昂贵的对象放入池中,在使用的时候直接获取,使用之后归还,还会通过一些策略调整池中对象数量实现池的动态伸缩。

怎么创建线程池?

    java的executors类库中提供了多种快速创建线程池的方法,例如newFixedThreadPool(),newCachedThreadPool()等,但是我们尽量不要直接使用,《阿里java开发规约》中也直接规定了不能使用executors类库中的创建线程池方法,应该手动使用newThreadPoolExecutor来创建线程池。这是因为newFixedThreadPool(),newCachedThreadPool()创建的线程池都是无界的,在线程大量堆积的时候就会容易造成OOM,翻开newFixedThreadPool()的源码不难发现线程池的工作队列直接new了一个LinkedBlockingQueue,而默认构造方法的LinkedBlockingQueue是Integer.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值