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

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

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

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

        };
        FutureTask task = new FutureTask(
                callable);

        new Thread(task).start();
    }
原文地址:[http://blog.csdn.net/ghsau/article/details/7451464](转载)

你可能感兴趣的:(java多线程Callable,Future,FutureTask(转载))