java ThreadPoolExecutor 并发调用实例详解

发布时间 - 2026-01-11 01:26:41    点击率:

java ThreadPoolExecutor 并发调用实例详解

概述

通常为了提供任务的处理速度,会使用一些并发模型,ThreadPoolExecutor中的invokeAll便是一种。

代码

package test.current;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

public class TestCallable {

  public static void main(String[] args) throws InterruptedException, ExecutionException {

    List<Callable<List<Long>>> tasks = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
      Callable<List<Long>> task = new Callable<List<Long>>() {
        @Override
        public List<Long> call() throws Exception {
          return Arrays.asList(1L,2L);
        }
      };

      tasks.add(task);
    }

    List<Long> finalResults = new ArrayList<>(10);
    List<Future<List<Long>>> results = ThreadPool.getThreadPool().invokeAll(tasks);
    for(Future<List<Long>> ele : results) {
      List<Long> list = ele.get();
      finalResults.addAll(list);
    }

    System.out.println(finalResults);
  }
}

package test.current;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ThreadPool {
  private static final int CORE_SIZE = 8;

  private static final int MAX_SIZE = 12;

  private static final long KEEP_ALIVE_TIME = 30;

  private static final int QUEUE_SIZE = 50000;

  private static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(CORE_SIZE, MAX_SIZE, KEEP_ALIVE_TIME,
      TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(QUEUE_SIZE), new ThreadPoolExecutor.AbortPolicy());

  public static ThreadPoolExecutor getThreadPool() {
    return threadPool;
  }
}

可以把需要执行的任务创建一个Callable task,利用线程池中的线程并发的执行这些task,从而提高任务的执行效率。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # ThreadPoolExecutor  # 并发调用  # java ThreadPool线程池的使用  # 线程池工具类用法说明  # Java ThreadPool的使用解析  # Java线程池ThreadPoolExecutor原理及使用实例  # java中ThreadPoolExecutor常识汇总  # Java ThreadPoolExecutor 线程池的使用介绍  # java线程池对象ThreadPoolExecutor的深入讲解  # 一篇文章带你了解Java中ThreadPool线程池  # 希望能  # 谢谢大家  # 创建一个  # 池中  # static  # TestCallable  # main  # void  # ExecutionException  # Callable  # public  # Future  # Long  # lt  # tasks  # gt  # args  # String  # InterruptedException  # throws 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251811 】 【 AI营销90571


相关推荐: Laravel如何记录自定义日志?(Log频道配置)  油猴 教程,油猴搜脚本为什么会网页无法显示?  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  使用Dockerfile构建java web环境  微信公众帐号开发教程之图文消息全攻略  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  EditPlus中的正则表达式 实战(2)  如何在Windows虚拟主机上快速搭建网站?  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Mybatis 中的insertOrUpdate操作  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel怎么连接多个数据库_Laravel多数据库连接配置  三星网站视频制作教程下载,三星w23网页如何全屏?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  用v-html解决Vue.js渲染中html标签不被解析的问题  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  公司门户网站制作流程,华为官网怎么做?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  教学论文网站制作软件有哪些,写论文用什么软件 ?  网站建设整体流程解析,建站其实很容易!  如何在橙子建站上传落地页?操作指南详解  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  如何在万网利用已有域名快速建站?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  长沙做网站要多少钱,长沙国安网络怎么样?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Angular 表单中正确绑定输入值以确保提交与验证正常工作  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  JavaScript如何操作视频_媒体API怎么控制播放  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel如何实现API速率限制?(Rate Limiting教程)  高防服务器如何保障网站安全无虞?  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Laravel如何实现模型的全局作用域?(Global Scope示例)  iOS发送验证码倒计时应用  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何为不同团队 ID 动态生成多个“认领值班”按钮  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  HTML 中动态设置元素 name 属性的正确语法详解  七夕网站制作视频,七夕大促活动怎么报名?