guawa 线程池使用
时间: 2023-12-22 14:27:53 浏览: 137
Guava中的线程池使用可以通过`ListeningExecutorService`接口来实现。该接口继承自`ExecutorService`,并添加了`ListenableFuture`支持,可以在任务完成时触发回调函数。以下是一个简单的例子:
```java
// 创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(10);
ListeningExecutorService listeningExecutorService = MoreExecutors.listeningDecorator(executorService);
// 提交任务
ListenableFuture<String> future = listeningExecutorService.submit(() -> {
// 执行任务
return "result";
});
// 添加回调函数
Futures.addCallback(future, new FutureCallback<String>() {
@Override
public void onSuccess(String result) {
// 处理成功结果
}
@Override
public void onFailure(Throwable t) {
// 处理异常情况
}
});
```
上述代码中,首先通过`Executors.newFixedThreadPool(10)`创建一个固定大小为10的线程池,然后通过`MoreExecutors.listeningDecorator(executorService)`将其转换为`ListeningExecutorService`。接着,通过`listeningExecutorService.submit()`方法提交一个任务,并返回一个`ListenableFuture`对象。最后,通过`Futures.addCallback()`方法添加回调函数,当任务执行完成时,会自动触发回调函数。
阅读全文