- 浏览: 136584 次
- 性别:
- 来自: 北京
文章分类
public class ThreadTest { public static void main(String[] args) { ExecutorService exe = Executors.newFixedThreadPool(10); ExecutorCompletionService com = new ExecutorCompletionService(exe); Future future = com.submit(new Runnable(){ @Override public void run() { throw new RuntimeException(); }},"success"); try{ System.out.println(com.take().get()); }catch (Exception e){ e.printStackTrace(); } } }
上述代码只有在调用get()时抛出异常,否则不打印任何异常信息,查看源码得到原因如下:
public Future<V> submit(Runnable task, V result) { if (task == null) throw new NullPointerException(); RunnableFuture<V> f = newTaskFor(task, result); executor.execute(new QueueingFuture(f)); return f; }
ExecutorCompletionService 的submit方法将Runnable 包装为一个RunnableFuture,而RunnableFuture的实现类为FutureTask,FutureTask的run方法如下:
public void run() { sync.innerRun(); } void innerRun() { if (!compareAndSetState(READY, RUNNING)) return; runner = Thread.currentThread(); if (getState() == RUNNING) { // recheck after setting thread V result; try { result = callable.call(); } catch (Throwable ex) { setException(ex); return; } set(result); } else { releaseShared(0); // cancel } }
可以看出当程序抛出异常时,没有打印任何异常信息,只是调用setException(ex),将异常信息赋值给 exception变量。当调用future.get()方法时,抛出异常,代码如下:
V innerGet() throws InterruptedException, ExecutionException { acquireSharedInterruptibly(0); if (getState() == CANCELLED) throw new CancellationException(); if (exception != null) throw new ExecutionException(exception); return result; }
发表评论
-
storm 安装
2013-09-02 16:32 3029------------------------------- ... -
动态代理性能比较
2013-01-18 17:02 1126转自http://javatar.iteye.com/blog ... -
java 类加载器学习
2012-12-14 10:47 999引用1.自定义类加载器 public interface ... -
jackson 学习
2012-11-13 15:42 9801.json 转为object对象 public clas ... -
ThreadPoolExecutor 原理-- java 线程池
2012-08-08 19:14 1105整个ThreadPoolExecutor的任务处理有4 ... -
java 缓冲
2012-08-08 19:12 986import org.apache.log4j.Logge ... -
java 程序消耗 cpu 100% 查找方法
2012-05-16 14:38 17176问题原因:由于HashMap是非线程安全的,在多线程访问时,造 ... -
java io
2012-04-24 11:06 8831、按字节读取文件内容 2、按字符读取文件内容 3、按行读取 ... -
java 内省
2011-11-20 22:58 786java内省 -
系统常用工具类
2011-04-20 17:46 9781.ArithUtil.java ... -
spring 面向切面编程
2010-12-27 17:03 1054@Aspect public class AspectCoup ... -
jxl 写入excel
2010-11-10 13:52 9911.程序调用 ReportInterface report ... -
java 读取excel
2010-11-10 09:04 915package com.longtuo.client.act ... -
java 生成略缩图
2010-10-20 17:21 1175import java.awt.Graphics2D; imp ... -
XStream简单介绍
2010-09-10 15:44 1648创建能够序列化的类 这是一组简单的类。XStream能把这 ... -
java中对集合类的排序
2010-05-04 13:47 8681.第一种 public class User impleme ... -
Java 获取操作系统信息与Desktop类
2009-11-17 16:24 1347import java.util.Properties; ... -
java 事物处理
2009-10-15 10:52 1397public boolean deleteSchedule ...
相关推荐
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉,需要了解的朋友可以参考下
熟悉Java的异常处理机制,了解如何捕捉和处理异常。 了解Java的集合框架和泛型,包括List、Set、Map等常见集合类型。 掌握Java的文件读写操作,包括读写文件、处理文件路径等。 熟悉Java的多线程编程,包括创建线程...
Java中的锁机制有哪些?它们有什么区别? 什么是线程安全?在Java中如何实现线程安全? 什么是继承?Java中的继承有哪些特点? 什么是多态?Java中的多态有哪些实现方式? 什么是抽象类?Java中的抽象类有哪些特点?...
Java基础:变量、数据类型、运算符、条件语句、循环语句、数组、集合、异常处理等 面向对象:类、继承、多态、包、接口、抽象类、泛型等 异常处理:try-catch-finally、异常分类及处理、自定义异常等 线程:线程创建...
javaexception.zip 07.Java面向对象编程扩展(计算器异常捕捉实例) 第3部分(5个程序包) javaio.zip 09.Java输入/输出流 javavi.zip 09.Java输入/输出流上机作业参考(文本编辑器) javathread.zip 10.Java多...
• 熟悉常见异常分类以及处理,熟悉反射、注解、内部类、泛型、序列化、深浅复制 • 熟悉Java多线程并发中线程基本方法,线程池,线程生命周期,熟悉Java锁中常见锁分类(乐观/悲观锁、自旋锁、独/共享锁、可重入锁、...
javaexception.zip 07.Java面向对象编程扩展(计算器异常捕捉实例) 第3部分(5个程序包) javaio.zip 09.Java输入/输出流 javavi.zip 09.Java输入/输出流上机作业参考(文本编辑器) javathread.zip 10.Java多...
5. 异常处理:面试官可能会询问您关于Java异常处理的知识,包括异常的分类、try-catch-finally块的使用、自定义异常类等。 6. 输入输出(IO):面试官可能会问及Java IO的知识,如字节流和字符流的区别、文件读写、...
答:异常处理是指在程序执行过程中遇到错误时进行处理的机制。Java中使用try-catch语句来捕获异常并进行处理。 7. 什么是Java中的泛型? 答:泛型是Java中一种参数化类型的概念,允许在编译时期检查类
异常处理:包括异常的分类、try-catch-finally块的使用、自定义异常等异常处理的相关内容。 多线程编程:涉及线程的创建、同步与互斥、线程池、线程间通信等多线程编程的知识。 IO操作:包括文件读写、字符流和...
javaexception.zip 07.Java面向对象编程扩展(计算器异常捕捉实例) 第3部分(5个程序包) javaio.zip 09.Java输入/输出流 javavi.zip 09.Java输入/输出流上机作业参考(文本编辑器) javathread.zip 10.Java多线程...
10.2 异常处理机制 358 10.2.1 使用try...catch捕获异常 359 10.2.2 异常类的继承体系 360 10.2.3 访问异常信息 363 10.2.4 使用finally回收资源 364 10.2.5 异常处理的嵌套 367 10.3 Checked异常和Runtime...
异常处理:在实现过程中需要考虑各种异常情况,如网络连接异常、文件IO异常等,需要进行适当的异常处理和错误提示,保证程序的稳定性和可靠性。 通过以上实践,可以实现基于HTTP协议的断点续传功能,提供更快速、...
《Java 7并发编程实战手册》是Java 7并发编程的实战指南,介绍了Java 7并发API中大部分重要而有用的机制。全书分为9章,涵盖了线程管理、线程同步、线程执行器、Fork/Join框架、并发集合、定制并发类、测试并发应用...
5.1 Java异常处理机制 49 5.2 File文件类 51 5.3 RandomAccessFile类 53 5.4基本流:FIS和FOS 55 5.5缓冲字节高级流:BIS和BOS 56 5.6基本数据类型高级流:DIS和DOS 56 5.7字符高级流:ISR和OSW 57 5.8缓冲字符高级...
错误处理:讲解并发编程中的错误处理,如异常安全、错误传播等。 实际案例:通过实际的编程案例来展示并发编程的应用。 适合的人群 初学者:对计算机科学或编程有一定了解,但尚未接触过并发编程的开发者。 中级...