get():获取任务执行结果,如果任务还没完成(state<=COMPLETING),则会阻塞等待直到任务执行完成;如果任务被取消,则会
抛出CancellationException异常;如果任务执行过程发生异常,则会抛出ExecutionException异常;如果阻塞等待过程中被中断,
则会抛出InterruptedException异常。
isDone():判断任务是否已经完成,如果完成则返回true,否则返回false。任务执行过程中发生异常、任务被取消也属于任务
已完成(state != NEW)。
isCancelled():判断任务是否被取消,如果任务完成前被取消,则返回true,否则返回false(state >= CANCELLED)。
/**
* 演示Callable Future FutureTask的使用
*/
public class UserFuture {
private static class UseCallable implements Callable<Integer> {
private int sum;
@Override
public Integer call(){
System.out.println("Callable子线程开始计算");
for(int i = 0; i < 101; i++) {
sum = sum + i;
}
System.out.println("Callable子线程计算完成,结果 = " + sum);
return sum;
}
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
UseCallable useCallable = new UseCallable();
FutureTask<Integer> futureTask = new FutureTask<Integer>(useCallable);
new Thread(futureTask).start();
System.out.println("Get UseCallable result = "+ futureTask.get());
}
演示Callable Future FutureTask的使用
最新推荐文章于 2025-10-05 17:31:42 发布
本文深入探讨了Java中CallableFuture与FutureTask的使用方法,包括get(), isDone(), isCancelled()等关键方法的功能与异常处理。通过示例代码演示了如何创建Callable任务并将其包装成FutureTask,最后在主线程中获取异步执行结果。
1273

被折叠的 条评论
为什么被折叠?



