package com.atguigu.juc;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/*
-
- Callable 接口:相较于 Runnable 接口,多了一个泛型与返回值。
-
- Callable 需要 FutureTask 的支持,用于 接收运算结果
*/
public class TestCallable {
public static void main(String[] args) {
HelloThread ht = new HelloThread();//Callable 需要 FutureTask 的支持,用于 接收运算结果 FutureTask<Integer> task = new FutureTask<>(ht); //FutureTask 也是闭锁 new Thread(task).start(); try { Integer sum = task.get(); System.out.println(sum); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); }
}
- Callable 需要 FutureTask 的支持,用于 接收运算结果
}
class HelloThread implements Callable{
@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 0; i <= 10000; i++) {
sum += i;
}
return sum;
}
}
/*class HelloThread implements Runnable{
@Override
public void run() {
}
}*/