【JAVA】java中Future、FutureTask的使用
来源:互联网 发布:好看的网络电视剧 编辑:程序博客网 时间:2024/06/05 20:41
现在的系统基本都是分布式的,各个系统各司其职的,不可能一个系统干了所有系统的事。
所以系统之间的交互就越来越多了,那么系统之间的交互只有通过网络来交互了,而网络必然会存在延时的情况。
比如A系统的一个功能要实现,其中某一步要去B系统拿一个全局唯一的ID值,那么此时在A系统的功能实现中就会发生对B系统的调用,如果是同步调用的话,可能会影响性能
String id = httpToB(url);
这样写的话,就是传统的同步方式,会一直等待B系统给出响应后才会继续往下执行;但是现实中,可能不是这样的,因为时间可能很长,所以先来一个线程去B系统拿这个ID值,当前线程,继续像后执行,当执行到某一步需要用到这个ID值了,再来取
这时候,就可以通过Future或者FutureTask来实现了,Future是接口,FutureTask是Future的一个具体实现类
private static ThreadPoolExecutor poolExe = new ThreadPoolExecutor(100, 1000, 1,TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(100));private static Future<String> getUamKid() {return poolExe.submit(new Callable<String>() {public String call() throws Exception {// TODO Auto-generated method stubreturn sendHttpPostRequest("XXXXXXXXX", "");}});}public static void main(String a[]) throws Exception {Future<String> future = getUamKid();System.out.println("去B系统取ID,现在我可以做自己的事情了");System.out.println("ID拿到了吗?" + future.isDone());long counter = 0;String uamKid = "";while (!future.isDone()) {counter++;//System.out.println("我等,我等,我等等等...");}uamKid = future.get();System.out.println("ID = " + uamKid);System.out.println("进去等了多少次?" + counter);}
去B系统取ID,现在我可以做自己的事情了ID拿到了吗?falseID = 38176732481585156进去等了多少次?4318049299前面无数个等等等...
可以看到了,等了4318049299这么多次,说明while循环了4318049299次才完成啊。
使用FutureTask的话,差不多,参照:http://blog.csdn.net/simonchi/article/details/8181571
0 0
- 【JAVA】java中Future、FutureTask的使用
- Java中Future和FutureTask的用法
- Java 中的 Future 和 FutureTask 的使用
- java的Future和FutureTask
- java的Future和FutureTask
- java的Future和FutureTask
- java的Future和FutureTask
- Java并发编程 ExecutorService Future FutureTask Callbale的使用
- java多线程Future、FutureTask使用示例,返回异步的结果
- java多线程Future、FutureTask使用示例,返回异步的结果
- Java Future/FutureTask
- Java 的Callable、Future和FutureTask
- Java的Runnable、Callable、Future、FutureTask。
- Java多线程 Callable Future FutureTask
- 【Java多线程】-Callable,Future,FutureTask
- Future和FutureTask的使用
- Java并发编程线程中:Callable、Future和FutureTask类
- Java中的Runnable、Callable、Future、FutureTask的区别和CompletionService的使用场景
- 5.1信号一2015/7/28
- ERP兵法——从案例透视方法(实施篇上)
- Drupal7 模块开发 之 定义模块
- C++类里面的const
- office visio连接线控制方法
- 【JAVA】java中Future、FutureTask的使用
- ERP兵法——从案例透视方法(实施篇下)
- 【ajax】jquery ajax 对接 rest api 接口示例
- Algorithms—237.Delete Node in a Linked List
- MTK平台在通话时降低充电电流
- 发V相关合同约定
- 更新、插入tableview某一行数据或section数据
- 突破private马其诺防线
- ERP系统实施过程问题概览