ExecutorService的submit或execute方法:execute和submit都是ExecutorService接口的方法,用于线程池提交任务。所有线程池都直接或间接实现ExecutorService接口。
时间: 2024-08-20 18:00:24 浏览: 37

线程池的submit和execute的区别.md
`ExecutorService` 的 `submit()` 和 `execute()` 方法都可以用来向线程池提交任务,但它们的行为略有不同:
1. **execute()** 方法[^4]:
- 该方法直接执行传入的任务(通常是一个 Runnable 或 Callable 实现的实例)。
- 如果任务抛出未检查异常(如 `Exception`),程序将继续运行,异常不会被捕获。
- 无返回值,无法获取任务的结果。
```java
executor.execute(task); // 直接执行task
```
2. **submit()** 方法[^4]:
- 类似于 `execute()`,但它返回一个 `Future` 对象,可以让你等待任务完成并获取结果。
- 可以捕获并处理 `Callable` 中抛出的 checked 异常。
- 如果 `Callable` 返回一个非 `void` 值,`submit()` 会返回这个结果。
```java
Future<?> future = executor.submit(task);
try {
Object result = future.get(); // 获取任务结果
} catch (InterruptedException | ExecutionException e) {
// 处理异常
}
```
阅读全文
相关推荐

















