ExecutorService.submit()与Executor.execute()的区别

相同之处:

1. execution.submit和execute方法均可以像线程池中提交一个任务,让线程池来异步执行这个任务;

2. 两个方法均可以接受Runnable类型的任务;

3. 从ExecutorService接口中均可以调用submit和execute方法,但是submit方法是在ExecutorService接口中定义的,而execute方法是在Executor接口中定义的;

不同之处:

1. submit()可以接受Runnable和Callable任务,但execute()只能接受Runnable任务;

2. submit方法的返回值是一个Future,而execute方法的返回值是void;

3. 对于异常的处理,使用submit方式提交的任务若在执行的过程中抛出了异常的话,异常信息会被吃掉(在控制台中看不到),需要通过Future.get方法来获取这个异常;使用execute方式提交的任务若在执行的过程中出现异常的话,异常信息会被打印到控制台;

什么时候使用这两个方法:

1. 若需要获取异步执行任务的返回值的话,使用submit方法;若仅仅是让一个任务在线程池中异步执行,使用execute方法;

posted @ 2023-02-19 09:50  云里雾里的测试  阅读(1122)  评论(0编辑  收藏  举报