全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

详解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 


相关文章: 韩国服务器如何优化跨境访问实现高效连接?  建站主机是什么?如何选择适合的建站主机?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  宝塔新建站点为何无法访问?如何排查?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  如何在建站之星绑定自定义域名?  郑州企业网站制作公司,郑州招聘网站有哪些?  建站为何优先选择香港服务器?  如何用好域名打造高点击率的自主建站?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  c# 在高并发场景下,委托和接口调用的性能对比  东莞专业制作网站的公司,东莞大学生网的网址是什么?  如何选择适配移动端的WAP自助建站平台?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  寿县云建站:智能SEO优化与多行业模板快速上线指南  建站之星CMS建站配置指南:模板选择与SEO优化技巧  常州企业网站制作公司,全国继续教育网怎么登录?  如何在景安服务器上快速搭建个人网站?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  网站制作报价单模板图片,小松挖机官方网站报价?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  如何获取免费开源的自助建站系统源码?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  香港服务器部署网站为何提示未备案?  ,网站推广常用方法?  如何在阿里云部署织梦网站?  已有域名如何快速搭建专属网站?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  建站之星与建站宝盒如何选择最佳方案?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  如何批量查询域名的建站时间记录?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  建站三合一如何选?哪家性价比更高?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  建站之星后台密码遗忘如何找回?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  ,石家庄四十八中学官网?  建站之星如何助力网站排名飙升?揭秘高效技巧  制作营销网站公司,淘特是干什么用的?  模具网站制作流程,如何找模具客户?  如何在阿里云香港服务器快速搭建网站?  如何通过主机屋免费建站教程十分钟搭建网站?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  制作网站的公司有哪些,做一个公司网站要多少钱?  ,制作一个手机app网站要多少钱?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  香港网站服务器数量如何影响SEO优化效果? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。