java 线程池(ExecutorService与Spring配置threadPoolTaskExecutor)

本文详细介绍了如何在Java中使用ExecutorService创建和管理线程池,包括初始化线程池、提交任务、关闭线程池以及阻塞等待的实现。同时,文章对比了Spring配置的线程池threadPoolTaskExecutor,分析了其核心参数如corePoolSize、maxPoolSize、queueCapacity和rejectedExecutionHandler的作用。文中还强调了线程池的合理使用和资源管理,例如在Spring中线程池的生命周期及其对应用的影响。
摘要由CSDN通过智能技术生成

一、java ExecutorService实现

  1. 创建ExecutorService变量

private ExecutorService executor = null

      2.执行对应任务时,首先生成线程池

executor = Executors.newFixedThreadPool(线程池大小);

      3.循环执行线程

        for (String str : ids) {

 

                     executor.submit(new Callable<Void>() {

                                         @Override

                                         public Void call() throws Exception {

                                                 ......;//线程执行具体内容

                                                  return null;

                                         }

                     });

         }

          4.关闭线城池, shutdown关闭线城池,执行后程序会继续往下进行,线城池会等待所有线程线程执行完毕后关闭。

executor.shutdown();

          5.设置阻塞等待awaitTermination, awaitTermination的作用是阻塞程序往下进行,使用之后程序会在所有线程执行完毕,关闭线城池之后才可以继续进行。但是如果超过等待时间则会抛出InterruptedException异常

       try {

      //设置最大阻塞时间,所有线程任务执行完成再继续往下执行

      executor.awaitTermination(1, TimeUnit.HOURS);

        long endTime = System.currentTimeMillis();         

      } catch (InterruptedException e) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值