ITPub博客

首页 > 应用开发 > Java > ExecutorService之submit与execute

ExecutorService之submit与execute

原创 Java 作者:541732025 时间:2013-05-28 10:25:17 0 删除 编辑
ExecutorService的submit与execute方法都能执行任务,但在使用过程,发现其对待run方法抛出的异常处理方式不一样。
两者执行任务最后都会通过Executor的execute方法来执行,但对于submit,会将runnable物件包装成FutureTask,其run方法会捕捉被包装的Runnable Object的run方法抛出的Throwable异常,待submit方法所返回的的Future Object调用get方法时,将执行任务时捕获的Throwable Object包装成java.util.concurrent.ExecutionException来抛出。

而对于execute方法,则会直接抛出异常,该异常不能被捕获,想要在出现异常时做些处理,可以实现Thread.UncaughtExceptionHandler接口:

点击(此处)折叠或打开

  1. class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler{
  2.  public void uncaughtException(Thread t, Throwable e) {
  3.  System.out.println(\"caught \"+e);
  4.  }
  5. }

  6. class HandlerThreadFactory implements ThreadFactory{
  7.  public Thread newThread(Runnable r) {
  8.  Thread t=new Thread(r);
  9.  t.setUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
  10.  return t;
  11.  }
  12. }

  13. ExecutorService exec=Executors.newCachedThreadPool(new HandlerThreadFactory())

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28912557/viewspace-762175/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-05-23

  • 博文量
    127
  • 访问量
    479253