package com.inmind.callable02; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /* 我们主线程是否可以获取子线程运行结束后的执行结果??? 使用继承Thread和实现Runnable都不行,要使用Callable,配合FutureTask类来启动线程 FutureTask 是Runnable的实现类,FutureTask构造方法接收Callable对象, 通过FutureTask作为参数传给Thread,就可以将Callable接口实现类作为Thread的目标任务去执行 获取子线程的结果的使用步骤: 1.定义Callable的实现类 2.创建FutureTask类对象,并以Callable的实现类作为参数 3.创建线程对象,并以FutureTask类作为参数 4.启动线程,在FutureTask对象中通过get方法获取子线程的结果 */ public class Demo01 { public static void main(String[] args) { //创建Callable的实现类 CallableImpl callable = new CallableImpl(); //创建FutureTask类对象 FutureTask futureTask = new FutureTask<>(callable); //创建线程对象,并以FutureTask类作为参数 Thread thread = new Thread(futureTask,"子线程123"); thread.start(); //在FutureTask对象中通过get方法获取子线程的结果 Integer result = null; try { //阻塞方法,它会等着子线程执行结束,返回了结果之后才继续运行 result = futureTask.get(); } catch (Exception e) { throw new RuntimeException(e); } System.out.println(result);//100 System.out.println("程序结束"); } }