标签:获得 tar 完成 异常 操作 结果类型 lan int end 工作
特点:
步骤:
Fork/Join框架提供的类:
ForkJoinTask
:提供在任务中执行fork()
和join()
操作的机制.可以继承其子类:
RecursiveAction
:没有返回结果的任务.RecursiveTask
:有返回结果的任务.ForkJoinPool
:提交的任务由其来执行.分割出来的子任务进入当前线程维护的双端队列的头部.工作线程没有任务时会从其他线程的队列的尾部获取任务.class MyForkJoin extends RecursiveTask{
private int[] array;
private int start;
private int end;
MyForkJoin(int[] array, int start, int end){
this.array = array;
this.start = start;
this.end = end;
System.out.println(Thread.currentThread().getName() + " Time is: " + System.currentTimeMillis());
}
@Override
protected Integer compute() {
int sum = 0;
if (end-start<=1){
for (int i = start; i <= end; i++) {
sum += array[i];
}
}
else {
MyForkJoin task1 = new MyForkJoin(array, start, (start + end) / 2);
MyForkJoin task2 = new MyForkJoin(array, (start + end) / 2 + 1, end);
task1.fork(); // 执行任务
task2.fork();
int res1 = (int) task1.join(); // 等待任务完成获取结果
int res2 = (int) task2.join();
sum = res1+res2;
}
return sum;
}
}
ForkJoinTask框架可能抛出异常,无法在主线程中直接获取异常.
可以通过isCompletedAbnormally()
方法检查任务是否已经抛出异常或者已经被取消.getException()
返回Throwable对象.
CancellationExcetpion
.标签:获得 tar 完成 异常 操作 结果类型 lan int end 工作
原文地址:https://www.cnblogs.com/truestoriesavici01/p/13216213.html