123456789101112131415161718192021222324252627282930 |
- package com.sf.javase.thread;
- import java.util.concurrent.Callable;
- import java.util.concurrent.ExecutionException;
- import java.util.concurrent.FutureTask;
- // callable的泛型 就是call方法的返回类型
- // Callable 和 Runnable的区别
- // call()方法相比run()方法,有返回值,还可以抛出异常
- // 泛型对应返回类型 泛型和FutureTask也相一致
- // FutureTask本质上是Runnable的实现类 所以可以将其作为构造参数传给Thread
- public class MyCallable implements Callable<Integer> {
- @Override
- public Integer call() throws Exception {
- System.out.println("call begin");
- return 0;
- }
- public static void main(String[] args) throws ExecutionException, InterruptedException {
- MyCallable myCallable = new MyCallable();
- // 要把callable作为futureTask的参数
- FutureTask<Integer> futureTask = new FutureTask<>(myCallable);
- // 创建线程并执行
- new Thread(futureTask).start();
- Integer result = futureTask.get();
- System.out.println(result);
- }
- }
|