- 首先该异常会被抛出,且根据线程提交方式的不同:
-
execute(new task())
会直接抛出异常; -
submit(new task())
则不会直接将异常抛出,而需要通过future.get()
获取线程池的结果或者异常信息; - 底层都是调用的
excute()
方法,无非是submit()
方法使用了try ... catch ...
进行了二次捕获处理,封装返回给Future
对象。
-
- 单个线程的异常并不会影响线程池中的其他任务执行;
- 最后会将这个线程从线程池中移除,并创建一个新的线程放到线程池中。
网友评论