详解JDK中ExecutorService与Callable和Future对线程的支持

发布时间 - 2026-01-11 03:22:23    点击率:

详解JDK中ExecutorService与Callable和Future对线程的支持

1、代码背景:

    假如有Thread1、Thread2、Thread3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?

2、代码:

    统计“盘子”大小的代码,此处实现jdk中的Callable接口,

package com.wang.test.concurrent; 
 
import java.util.concurrent.Callable; 
 
public class Task1 implements Callable<Integer> { 
 
  private int x; 
  private int y; 
   
  public Task1(int x, int y) { 
    this.x = x; 
    this.y = y; 
  } 
 
  @Override 
  public Integer call() throws Exception { 
    return x*y; 
  } 
 
} 

    统计汇总的代码,也是实现jdk中的Callable接口,

package com.wang.test.concurrent; 
 
import java.util.concurrent.Callable; 
 
public class Task2 implements Callable<Integer> { 
 
  private int x; 
  private int y; 
  private int q; 
  private int w; 
   
  public Task2(int x, int y, int q, int w) { 
    this.x = x; 
    this.y = y; 
    this.q = q; 
    this.w = w; 
  } 
 
  @Override 
  public Integer call() throws Exception { 
    return x + y + q + w; 
  } 
 
} 

     客户端:使用JDK中Executors.newFixedThreadPool方法创建ExecutorService,ExecutorService的submit方法接收Callable接口的实现,JDK内部将弄成线程处理,使用Future接收submit方法的返回值,当future调用get方法时,如果线程还没有执行完,程序阻塞在这里,知道线程执行完。

package com.wang.test.concurrent; 
 
import java.util.concurrent.ExecutorService; 
import java.util.concurrent.Executors; 
import java.util.concurrent.Future; 
 
public class Client { 
 
  public static void main(String[] args) throws Exception { 
    ExecutorService pool = Executors.newFixedThreadPool(4); 
 
    Task1 t1 = new Task1(1,2); 
    Task1 t2 = new Task1(23,34); 
    Task1 t3 = new Task1(23,456); 
    Task1 t4 = new Task1(3,33); 
    Future<Integer> f1 = pool.submit(t1); 
    Future<Integer> f2 = pool.submit(t2); 
    Future<Integer> f3 = pool.submit(t3); 
    Future<Integer> f4 = pool.submit(t4); 
     
    //Future调用get方法时,如果线程还没有执行完,程序阻塞在这里 
    Task2 t5 = new Task2(f1.get(), f2.get(), f3.get(), f4.get()); 
    Future<Integer> f5 = pool.submit(t5); 
     
    System.out.println(f5.get()); 
     
    pool.shutdown(); 
  } 
} 

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# JDK  # ExecutorService  # JDK中ExecutorService与Callable和Future对线程的支持  # ExecutorService实现获取线程返回值  # Java ScheduledExecutorService定时任务案例讲解  # java多线程CountDownLatch与线程池ThreadPoolExecutor/Execut  # Java使用Callable和Future创建线程操作示例  # java通过Callable和Future来接收线程池的执行结果  # ExecutorService Callable Future多线程返回结果原理  # 在这里  # 还没有  # 如有  # 希望能  # 去做  # 谢谢大家  # 四条  # 如何实现  # 弄成  # 返回值  # 客户端  # 疑问请  # concurrent  # import  # test  # wang  # gt  # Integer  # int  # private 


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


相关推荐: Laravel如何使用Eloquent进行子查询  如何获取免费开源的自助建站系统源码?  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  Swift中循环语句中的转移语句 break 和 continue  如何破解联通资金短缺导致的基站建设难题?  海南网站制作公司有哪些,海口网是哪家的?  中国移动官方网站首页入口 中国移动官网网页登录  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  魔毅自助建站系统:模板定制与SEO优化一键生成指南  佛山网站制作系统,佛山企业变更地址网上办理步骤?  ,怎么在广州志愿者网站注册?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  专业商城网站制作公司有哪些,pi商城官网是哪个?  如何快速打造个性化非模板自助建站?  如何为不同团队 ID 动态生成多个非值班状态按钮  香港服务器如何优化才能显著提升网站加载速度?  微信公众帐号开发教程之图文消息全攻略  如何快速启动建站代理加盟业务?  Android实现代码画虚线边框背景效果  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  微信小程序 五星评分(包括半颗星评分)实例代码  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Laravel如何自定义分页视图?(Pagination示例)  音响网站制作视频教程,隆霸音响官方网站?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  php结合redis实现高并发下的抢购、秒杀功能的实例  Mybatis 中的insertOrUpdate操作  奇安信“盘古石”团队突破 iOS 26.1 提权  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  详解jQuery中的事件  香港服务器网站卡顿?如何解决网络延迟与负载问题?  如何在IIS服务器上快速部署高效网站?  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Laravel怎么在Controller之外的地方验证数据  昵图网官方站入口 昵图网素材图库官网入口  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  Laravel如何创建自定义Facades?(详细步骤)  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  长沙做网站要多少钱,长沙国安网络怎么样?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?