package J20250730.demo03_callable;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;

/**
 * @author WanJl
 * @version 1.0
 * @title Main
 * @description
 * @create 2025/7/30
 */
public class Main {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //3、创建实现类的对象
        Computer c=new Computer();
        //4、创建FutureTask对象，把Callable的实现类的对象作为FutureTask类的构造方法的参数
        FutureTask<Integer> ft=new FutureTask(c);   // 父类的引用执行子类的对象
        //5、创建Thread类的对象，把FutureTask对象作为Thread类的构造方法的参数
        Thread t1=new Thread(ft,"线程1");
        //6、调用Thread对象的start方法，启动线程
        t1.start();
        //7、再调用Future接口的get方法(实际上就是FutureTask对象的get方法)，获取线程结束后的计算结果。
        Integer sum = ft.get();
        System.out.println(sum);

    }
}
