package com.java.concurrent; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /** * 一、创建线程的方式三:实现Callable接口,相较于实现Runnable 接口的方式,方法可以有返回值,并且可以抛出异常 * * 二、执行Callable方式,需要FutureTask 实现类的支持,用于接收运算结果。 FutureTask是Future接口的实现类 * @author fliay * */ public class Thread02 { public static void main(String[] args) { ThreadDemo td = new ThreadDemo(); //1.执行FutureTask,需要FutureTask实现类的支持,用于接收运算结果 FutureTask<Integer> result = new FutureTask<Integer>(td); new Thread(result).start(); //2.接收线程运算后的结果 try { Integer sum =result.get(); System.out.println(sum); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } } class ThreadDemo implements Callable<Integer>{ public Integer call() throws Exception { int sum = 0; for(int i =0;i<100;i++){ sum+=i; } return sum; } }