java future模式举例
——我一直不太信任自己的记忆力,所以我把它们都写下来
Future模式在java中简单使用
直接模拟场景,然后看实例,一直以来喜欢这种直接的方式:有两个比较耗时的计算过程,一个耗时5秒,一个耗时2秒,那我们怎么在5秒时得到计算结果?
先是普通的做法
public class ExeCutorTest { /** * @param args */ public static void main(String[] args) { //计时开始 Long beg = new Date().getTime(); System.out.println("结果"+(calcA()+calcB())); //执行完成后话费的时间 System.out.println("花费时间"+(new Date().getTime()-beg)); } //耗时操作A需要2000毫秒 public static int calcA(){ int count = 50; try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } return count; } //耗时操作B需要5000毫秒 public static int calcB(){ int count = 100; try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } return count; } }
运行控制台输出结果如下,如我们所料是7000毫秒也就是7秒;
结果150
花费时间7000
下面是使用Future模式的改良版
public class ExeCutorTest { /** * @param args */ public static void main(String[] args) { // 计时开始 Long beg = new Date().getTime(); FutureTask<Integer> task = new FutureTask<Integer>( new Callable<Integer>() { @Override public Integer call() throws Exception { return calcB(); } }); Thread t = new Thread(task); t.start(); try { System.out.println("结果" + (calcA() + task.get())); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } // 执行完成后话费的时间 System.out.println("花费时间" + (new Date().getTime() - beg)); } // 耗时操作A需要2000毫秒 public static int calcA() { int count = 50; try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } return count; } // 耗时操作B需要5000毫秒 public static int calcB() { int count = 100; try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } return count; } }
控制台打印输出的结果:
结果150
花费时间5005
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关推荐
- `Callable`与`Future`的使用。 - 线程同步机制:`synchronized`关键字、`ReentrantLock`等。 - 线程池的创建与管理。 - **面试考察要点:** - 死锁的概念与预防措施。 - 线程安全问题的识别与解决。 #### 二...
- 举例说明接口和抽象类的区别。 2. **异常处理**: - 面试题:解释checked和unchecked异常的区别,并给出实例。 - 解决方案:checked异常是编译时需要处理的异常,如IOException;而unchecked异常在运行时抛出...
5.5.1 混合模式操作符 5.5.2 标准类型操作符 5.5.3 算术操作符 5.5.4 *位操作符(只适用于整型) 5.6 内建函数与工厂函数 5.6.1 标准类型函数 5.6.2 数字类型函数 5.6.3 仅...
孙允中临证实践录.pdf
Rqalpha-myquant-learning对开源项目Rqalpha的改造,在应用上面更适合个人的应用。学习量化策略,对量化策略进行开发调试。2018-05-25程序更新集成大鱼金融提供的分钟线回测Mod,用来提供Jaqs分钟线数据源,测试程序通过。目前的改造情况1.增加ats.main.py,来驱动起回测,使程序可以使用pycharm进行开发调试2.增加批量回测功能3.在AlgoTradeConfig中进行配置回测的策略和所需要的参数信息,参数信息通过excel文件进行配置4.在ats.main.py中设置参数为batch,运行回测,会将输出的.csv文件放在cvsResult目录下,将回测的图片保存在picResult目录下。5.读取回测的.csv文件,提取账户信息,可以将不同参数回测的结果输出在同一张图片上,更加清晰的看清同一个策略,不同参数所带来的变化。6.从广发信号站点获取历史交易信号(站点已停止,此处无法继续)7.增加通用函数的封装,现阶段增加了对TA_LIB的调用封装(未完整完成)8.增加了对增量资金定投的情况的模拟,用
航班背景随着国内民航的不断发展,航空出行已经成为人们比较普遍的出行方式,但是航班延误却成为旅客们比较头疼的问题。台风,雾霾或飞机故障等因素都有可能导致大面积航班延误的情况。大面积延误给旅客出行带来很多不便,如何在计划起飞前2小时预测航班延误情况,让出行旅客更好的规划出行方式,成为一个重大课题。要求提前2小时(航班计划起飞时间前2小时),预测航班是否会延误3小时以上(给出延误3小时以上的概率)
comsol变压器绝缘油中流注放电仿真,使用PDE模块建立MIT飘逸扩散模型。 模型到手即用,提供MIT鼻祖lunwen中文版,及相关学习笔记资料。 流注放电,绝缘油,油纸绝缘。
基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助
云南大数据交通太阳的云南大数据交通
comsol激光打孔(不通)水平集两相流仿真模型,涉及温度场流场水平集, 模型为复现模型,仅供学习,可自己更材料功率等参数 爽快确认模型无误并收送变形几何三维打孔模型或水平集抛光模型。
哈工深 自适应滤波课堂笔记
Django框架实现学生信息管理系统 总体概括 注册流程 首先进行输入用户名(邮箱)、密码以及验证码,输入完之后点击注册按钮。如果输入的不正确,提示错误信息。 如果一切信息填写正确无误,调用STMP模块发送激活邮件,用户必须要点击接收到邮箱链接,进行邮件激活后才方可登陆。 即使注册成功,没有激活的用户也不能登陆,用户以get的方式直接重定向到注册页面。 注册登录: 用户能在系统中进行登陆注册和忘记密码进行找回的功能。 个人中心:修改头像,修改密码,修改邮箱,可以看到我的信息。 日志记录: 记录后台人员的操作,方便发现BUG和查看各项调用进行时间。 导航栏:学生信息中有基本信息、年级及成绩信息的模块,能够排序筛选等功能。 多选操作: 可以选择多条记录进行删除操作,还可以在课程列表页可以对不同课程进行排序。 数据页码: 可以设置各项数据在每一页中显示的数量多少,进行翻页功能。 模块列表页: 能够有过滤器功能,在范围内进行查看数据。还能将数据导出为csv,x
车辆主动悬架防侧翻控制 利用Simulink和Carsim进行联合仿真,搭建主动悬架以及防倾杆模型,在不同转角工况下进行仿真试验,设置滑模等控制器计算维持车辆侧倾稳定性所需的力矩,将力矩分配到各个悬架实现控制效果。 控制效果良好,保证运行成功。 项目报告撰写请单独。
计算机系毕业设计
资源描述: HTML5实现好看的MT外卖订餐网站源码,好看的酷炫的MT外卖订餐网站源码,酷炫的MT外卖订餐网站源码模板,HTML酷炫的MT外卖订餐网站源码,内置酷炫的动画,界面干净整洁,页面主题,全方位介绍内容,可以拆分多个想要的页面,可以扩展自己想要的,注释完整,代码规范,各种风格都有,代码上手简单,代码独立,可以直接运行使用。也可直接预览效果。 资源使用: 点击 index.html 直接查看效果
MDPI下的sensors模板,.docx格式
新医林改错《内经·素问》分册.pdf
命令行查看基金、个股数据,使用天天基金和新浪财经的数据接口,欢迎大家fork基金2.0命令行查看基金、个股数据,使用天天基金和新浪财经的数据接口,欢迎大家fork环境准备运行环境Python3 所需的软件包requests prettytable colorama基金自选修改my_jijin.txt文本文件,每行都是一个您关注的基金代码启动方式python3 main.py
NiuCloud-Admin-SAAS 是一款快速开发SaaS通用管理系统后台框架, 前端采用最新的技术栈Vite+TypeScript+Vue3+ElementPlus最流行技术架构,后台结合PHP8、Java SDK、Python等主流后端语言搭建是一款快速可以开发企业级应用的软件系统。