java 使用Callable+FutureTask获取执行结果

之前给大家分享了使用Callable+Future获取执行结果的java示例,那么下面要给大家分享的就是使用Callable+FutureTask获取执行结果的java示例,一起来看看吧。

public class Test
{
    public static void main(String[] args)
    {
        //方式1
        ExecutorService executor = Executors.newCachedThreadPool();
        Task task = new Task();
        FutureTask < Integer > futureTask = new FutureTask < Integer > (task);
        executor.submit(futureTask);
        executor.shutdown();
        //方式2,注意这种方式和第一种方式效果是类似的,只不过一个使用的是ExecutorService,一个使用的是Thread
        /*Task task = new Task();
        FutureTask<Integer> futureTask = new FutureTask<Integer>(task);
        Thread thread = new Thread(futureTask);
        thread.start();*/
        try
        {
            Thread.sleep(1000);
        }
        catch (InterruptedException e1)
        {
            e1.printStackTrace();
        }
        System.out.println("主线程在执行任务");
        try
        {
            System.out.println("task运行结果" + futureTask.get());
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        catch (ExecutionException e)
        {
            e.printStackTrace();
        }
        System.out.println("所有任务执行完毕");
    }
}
class Task implements Callable < Integer >
{
    @Override
    public Integer call() throws Exception
    {
        System.out.println("子线程在进行计算");
        Thread.sleep(3000);
        int sum = 0;
        for (int i = 0; i < 100; i++)
            sum += i;
        return sum;
    }
}

假如,是为了能够取消性而使用的Future,但是,又不能够提供可用的结果。

那么,就可以声明Future形式类型,并且返回null作为底层任务的结果。

更多的java实例,请继续来奇Q工具网了解吧。

推荐阅读:

java callable用法示例,java实例教程

java继承例子代码,java类的继承示例

java编写程序五只猴子分海滩上的一堆桃子答案