【发布时间】:2016-09-13 16:47:58
【问题描述】:
关于以下代码中的异常处理:
ListenableFuture<BufferedImage> imgFuture = downloadExecutor
.submit(new Downloader(url));
ListenableFuture<BufferedImage> resizeFuture = Futures.transformAsync(
imgFuture, new AsyncFunction<BufferedImage, BufferedImage>()
{
@Override
public ListenableFuture<BufferedImage> apply(
BufferedImage input) throws Exception
{
ListenableFuture<BufferedImage> resizedFuture = null;
if (input != null)
{
resizedFuture = actionExecutor
.submit(new ResizeImageAction(input));
}
return resizedFuture;
}
});
ListenableFuture<BufferedImage> grayFuture = Futures
.transformAsync(resizeFuture, input -> {
return actionExecutor
.submit(new ToGrayImageAction(input));
});
假设提交给执行程序的每个操作都可以引发异常,那么这段代码将如何表现。
transformAsync() 方法是否知道不链接引发异常的空值或期货?在这里使用CheckedFuture 会帮助我吗?如果是,我应该如何使用它?
【问题讨论】:
标签: java concurrency guava future