带返回值的线程创建方式


package thread;

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

/**
 * @description: CallerTask类实现了Callable接口的call()方法。在main函数内首先创建了一个
 *                FutrueTask对象(构造函数为CallerTask的实例),然后使用创建的FutrueTask对象
 *                作为任务创建了一个线程并且启动它,最后通过futureTask.get()等待任务执行完毕并返回结果。
 * @author: Raymond
 * @createDate: 2020/5/6
 * @version:
 */
public class FutureTaskTest {

    public static class CallerTask implements Callable {
        @Override
        public String call() throws Exception {
            return "Hello Raymond !";
        }
    }

    public static void main(String[] args) {
        // 创建异步任务
        FutureTask futureTask = new FutureTask<>(new CallerTask());
        new Thread(futureTask).start();
        try {
            String result = futureTask.get();
            System.out.println(result);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}