创建线程池ThreadPoolExecutor或ThreadPoolTaskExecutor

本文介绍了如何使用ThreadPoolExecutor和ThreadPoolTaskExecutor创建线程池。虽然Executors可以快速创建线程池,但《阿里巴巴Java开发手册》建议避免使用,因为它可能导致OOM问题。FixedThreadPool和SingleThreadPool可能会因请求队列过长引发内存溢出,而CachedThreadPool和ScheduledThreadPool可能因创建过多线程导致相同问题。
摘要由CSDN通过智能技术生成

ThreadPoolExecutor

package java.util.concurrent;

private ExecutorService threadPool = new ThreadPoolExecutor(
    4,                  // int corePoolSize,    核心线程数,一旦创建将不会再释放。
    4,                  // int maximumPoolSize, 最大线程数,允许创建的最大线程数。
    60L,                // long keepAliveTime,  非核心线程空闲时,允许保存的最大时间,过期以后线程将被释放销毁。
    TimeUnit.SECONDS,   // TimeUnit unit,       时间单位,TimeUnit.SECONDS等  
    new LinkedBlockingQueue<Runnable>(1024),    // BlockingQueue<Runnable> workQueue,   任务队列,存储暂时无法执行的线程任务,等待空闲线程来执行。此处只可以是BlockingQueue<Runnable>,所以不能使用ConcurrentLinkedQueue<Runnable>
    Executors.defaultThreadFactory(),           // ThreadFactory threadFactory, 线程工厂,用于创建线程。
    new ThreadPoolExecutor.CallerRunsPolicy() // RejectedExecutionHandler handler 当线程边界和队列容量达到最大时,用于处理阻塞时的程序。
);

ThreadPoolTa

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值