java-jdk7-forkjoin异常返回
来自:http://ifeve.com/fork-join-5/
在Java中有两种异常:
- 已检查异常(Checked exceptions):这些异常必须在一个方法的throws从句中指定或在内部捕捉它们。比如:IOException或ClassNotFoundException。
- 未检查异常(Unchecked exceptions):这些异常不必指定或捕捉。比如:NumberFormatException。
在ForkJoinTask类的compute()方法中,你不能抛出任何已检查异常,因为在这个方法的实现中,它没有包含任何抛出(异常)声明。你必须包含必要的代码来处理异常。但是,你可以抛出(或者它可以被任何方法或使用内部方法的对象抛出)一个未检查异常。ForkJoinTask和ForkJoinPool类的行为与你可能的期望不同。程序不会结束执行,并且你将不会在控制台看到任何关于异常的信息。它只是被吞没,好像它没抛出(异常)。你可以使用ForkJoinTask类的一些方法,得知一个任务是否抛出异常及其异常种类。在这个指南中,你将学习如何获取这些信息。
task:
package com.wenbronk.forkjoin.exception; import java.util.concurrent.RecursiveTask;
import java.util.concurrent.TimeUnit; /**
* forkjoin 中抛出异常的处理
* Created by wenbronk on 2017/7/27.
*/
public class Task extends RecursiveTask<Integer> { private int array[];
private int start, end; public Task(int[] array, int start, int end) {
this.array = array;
this.start = start;
this.end = end;
} @Override
protected Integer compute() {
System.out.printf("task: start from %d to %d \n", start, end);
if (end - start < ) {
if (( > start) && ( < end)) {
System.out.println("paochu yichang " + start + " to " + end);
throw new RuntimeException("task from " + start + " to " + end);
}
try {
TimeUnit.SECONDS.sleep();
}catch (Exception e) {
e.printStackTrace();
}
}else {
int mid = (start + end) /;
Task task1 = new Task(array, start, mid);
Task task2 = new Task(array, mid, end);
invokeAll(task1, task2);
}
System.out.printf("task: end from %d to %d \n", start, end);
return ;
}
}
main:
package com.wenbronk.forkjoin.exception; import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.TimeUnit; /**
* Created by wenbronk on 2017/7/27.
*/
public class ExceptionMain { public static void main(String[] args) {
int[] array = new int[]; Task task = new Task(array, , ); ForkJoinPool forkJoinPool = new ForkJoinPool();
forkJoinPool.execute(task); forkJoinPool.shutdown(); try {
forkJoinPool.awaitTermination(, TimeUnit.DAYS);
} catch (InterruptedException e) {
e.printStackTrace();
} if (task.isCompletedAbnormally()) {
System.out.println("main::: an exception has occured \n");
System.out.printf("main:::: %s \n", task.getException());
}
System.out.printf("main: result: %d", task.join());
} }
java-jdk7-forkjoin异常返回的更多相关文章
- java.lang.IllegalArgumentException异常 返回值类型的问题
java.lang.IllegalArgumentException: Cannot create TypedQuery for query with more than one return usi ...
- 点评阿里JAVA手册之异常日志(异常处理 日志规约 )
下载原版阿里JAVA开发手册 [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:异常处理 日志规约 本文难度系数为一星(★) 本文为第三篇 ...
- 夯实Java基础系列10:深入理解Java中的异常体系
目录 为什么要使用异常 异常基本定义 异常体系 初识异常 异常和错误 异常的处理方式 "不负责任"的throws 纠结的finally throw : JRE也使用的关键字 异常调 ...
- Core Java 总结(异常类问题)
所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 下面的代码输出结果是多少?为什么?并由 ...
- 【Java心得总结二】浅谈Java中的异常
作为一个面向对象编程的程序员对于 下面的一句一定非常熟悉: try { // 代码块 } catch(Exception e) { // 异常处理 } finally { // 清理工作 } 就是面向 ...
- [改善Java代码] 提倡异常的封装
JavaAPI提供的异常都是比较低级别的,低级别是指只有开发人员才能看懂的异常.而对于终端用户来说基本上就是天书,与业务无关,是纯计算机语言的描述. 异常封装的三方面的好处: 1)提高系统的友好性 ...
- java学习一目了然——异常必知
java学习一目了然--异常必知 我们只要学java,异常肯定非常熟悉,该抛的时候抛一下就行.但是这其中还有点小细节需要注意.就用这个小短篇来说一下异常处理中的小细节吧. 异常处理 RuntimeEx ...
- response.sendRedirect 报 java.lang.IllegalStateException 异常的解决思路
今天在进行代码开发的时候,出现了 java.lang.IllegalStateException异常,response.sendRedirect("./DEFAULT.html") ...
- Java中的异常和处理详解
简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?. ...
- java.util.ConcurrentModificationException 异常问题详解
环境:JDK 1.8.0_111 在Java开发过程中,使用iterator遍历集合的同时对集合进行修改就会出现java.util.ConcurrentModificationException异常, ...
随机推荐
- win7结束进程 时,提示“拒绝访问”、“没有此任务的实例运行”怎么办?
开发了个程序,创建了一个进程,但是杀不掉了,在任务管理器里面 右键--结束进程,提示“拒绝访问”,或者“没有此任务实例运行” 怎么办? 直接给答案:PCHunter 具体方法: 1.打开PCHunte ...
- Linux操作系统文件系统基础知识详解
一 .Linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法.主要体现在对文件和目录的组织上. 目录提供了管理文件的一个方便而有效的途径. Linux使用标准的目录结构,在安装的时候,安装 ...
- [javascript library]使用js实现页面刷新后依然保留表单填写的数据
详情请见于该链接:http://sisyphus-js.herokuapp.com/
- ThinkPad T430i,如何将WIN8换成WIN7???
1. 启动时不断点击键盘上的F1键,进入BIOS 界面选择“Restart”→把 “OS Optimized Default”设置为 “disabled” ,(OS Optimized Default ...
- C#实现在图片上动态写内容
之前在项目上遇到这么一个需求,就是要在图片上写内容,而且要求是动态,我所谓的动态就是在图片上写的内容是动态的.网上找了找,很多人实现了网图片上写内容的功能,但是,并没有实现动态.所以在这里把我的解决办 ...
- C#一个简单的关于线程的实例
很多初学者听到线程会觉得晦涩难懂,很多资料一堆专有名词也是让人心烦意乱,本着学习加分享的态度,这里做一个简单的实例分享帮助初学者们初识多线程. 首先大概讲述一下多线程和多进程的区别,任务管理器里各种 ...
- SQL 2012新分页方式
--2012的OFFSET分页方式 (推荐使用 - 较为方便) select number from spt_values where type='p' order by number offset ...
- datagridview 代码添加列
int column_key = 0; private DataGridViewTextBoxColumn column_add(string name) { DataGridViewTextBoxC ...
- C# VS .NET 版本对应关系
╔══════╦══════╦═══════╦════ ══╦═══════╗ ║ C# version ║ VS version ║ .NET version ║ CLR version ║ Rel ...
- DataType 枚举
命名空间: System.ComponentModel.DataAnnotations 成员名称 说明 CreditCard 表示信用卡号码. Currency 表示货币值. Cust ...