ThreadPoolTaskExecutor excute和submit
时间: 2023-09-08 08:13:56 浏览: 100
ThreadPoolTaskExecutor 提供了两种方式来提交任务:execute() 和 submit()。
1. execute() 方法:这是最基本的提交任务的方法,它接收一个 Runnable 对象作为参数,表示要执行的任务。使用 execute() 提交的任务没有返回值,也无法捕获任务执行过程中的异常。
```java
threadPoolTaskExecutor.execute(new Runnable() {
@Override
public void run() {
// 任务执行逻辑
}
});
```
2. submit() 方法:这个方法与 execute() 方法类似,也接收一个 Runnable 对象作为参数,表示要执行的任务。不同之处在于,submit() 方法返回一个 Future 对象,可以通过该对象获取任务执行的结果。
```java
Future<?> future = threadPoolTaskExecutor.submit(new Runnable() {
@Override
public void run() {
// 任务执行逻辑
}
});
// 可以通过 Future 对象获取任务执行的结果
try {
Object result = future.get();
} catch (InterruptedException | ExecutionException e) {
// 处理异常
}
```
使用 submit() 提交的任务可以通过 Future 对象来获取任务的执行结果,还可以使用 Future 的 get() 方法来阻塞等待任务执行完成,并获取任务的结果。此外,submit() 方法还可以接收一个 Callable 对象作为参数,与 Runnable 不同的是,Callable 可以返回一个值。
根据实际需求选择使用 execute() 或 submit() 方法来提交任务。
阅读全文