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
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关推荐
下面小编就为大家带来一篇老生常谈java中的Future模式。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了Java的Future编程模式,包括对异步和并发的一些设计思维,需要的朋友可以参考下
主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
主要介绍了java Future 接口使用方法详解,Future接口是Java线程Future模式的实现,可以来进行异步计算的相关资料,需要的朋友可以参考下
java并发包之Callable和Future java并发包之Callable和Future java并发包之Callable和Future java并发包之Callable和Future java并发包之Callable和Future java并发包之Callable和Future
首先,Future是一个接口,该接口用来返回异步的结果。 ... import java.util.ArrayList; import java.util.concurrent.Callable; import java.util.concurrent.... import java.util.concurrent.Future
Future模式核心思想是异步调用,这里具体实现代码,其思想是:网上订了一个货之后,他会立即返回下好订单给你,你可以去做其他事,不用再一直等这个货物到达,以后有时间,货物到了,你就可以拿这个订单,去取货。...
主要为大家详细介绍了Java中Future、FutureTask原理以及与线程池的搭配使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Java程序执行超时——Future接口介绍
通过程序范例和UML图示来一一解说,书中代码的重要部分加了标注以使读者更加容易理解,再加上图文并茂,对于初学者还是程序设计高手来说,这都是一本学习和认识JAVA设计模式的一本好书。(注意,本资源附带书中源...
在本篇文章里我们给大家分享了java中Future与FutureTask之间的关系的内容,有需要的朋友们可以跟着学习下。
第9章 Future——先给您这张提货单 第10章 Two-Phase Termination——快把玩具收拾好,去睡觉吧 第11章 Thread-Specific Storage——每个线程的保管箱 第12章 Active Object——接受异步消息的主动对象 总结 多线程...
里面有JAVA 设计模式 工厂模式 单例模式 观察者模式 装饰者模式以及future 和生产消费模式的实例 详细讲解请查看我的博客:http://my.csdn.net/ajun495175289
NULL 博文链接:https://waitingkkk-163-com.iteye.com/blog/2232286
Future接口是Java线程Future模式的实 现,可以来进行异步计算。 Future模式可以这样来描述:我有一个任务,提交给了Future,Future替我完成这个任务。期间我自己可以去做任何想做的事情。一段时 间之后,我就便...
主要介绍了java Callable与Future的详解及实例的相关资料,需要的朋友可以参考下
Future是并发编程中的一种设计模式,Future它代表一个异步计算的结果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面小编和大家来一起学习一下吧
在Java编程中,有时候会需要及时获取线程的运行结果,本文就通过一个相关实例向大家介绍Java利用future及时获取线程运行结果的方法,需要的朋友可以参考。
JActor 是一个 Java 的 Actor 模式的实现,经过测试在 i5 CPU 上可支持每秒钟发送超过亿条消息,可能是目前最快的。这相当于是 Scala 的 Actor 的纯 Java 版本。 示例代码: // Create a mailbox factory with a ...
主要介绍了Java中的Runnable,Callable,Future,FutureTask的比较的相关资料,需要的朋友可以参考下