java多线程Callable,Future,FutureTask(转载)

我们平时接触到的多线程Thread,Runnable,这两种方式不能返回线程执行后的结果。
假如有Thread1、Thread2、Thread3三个线程分别统计信息,
所有线程统计完毕交给Thread4汇总,应当如何实现?
Callable和Future,前者产生结果,后者拿到结果。
Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值,下面来看一个简单的例子:

public void init() throws ServletException {
        Callable<String> callable = new Callable<String>() {

            public String call() throws Exception {
                start(); // 使用另一个线程来执行该方法,会避免占用Tomcat的启动时间
                return "Collection Completed";
            }

        };
        FutureTask<String> task = new FutureTask<String>(
                callable);

        new Thread(task).start();
    }
原文地址:[http://blog.csdn.net/ghsau/article/details/7451464](转载)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,515评论 1 15
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 3,002评论 1 18
  • 时光飞逝,岁月蹉跎。 若有作为,需一清静世界。 清者若风,静者如水。 清静者,心无旁骛,超凡入圣。 人之欲:贪、嗔...
    俗然阅读 315评论 1 3
  • 中秋节的最后一天, 假,已经过完了! 据天文学家推算, 今年中秋节的月亮, 将会在17日晚为正圆, 也就是说, 中...
    中和黄埔阅读 431评论 0 0
  • 唐太宗,名李世民,于贞观元年(627)即位,在他统治时期,后人称为贞观之治。也为后来的开元之治奠定了厚实的基础。...
    非法非非法阅读 1,344评论 0 0