completablefuture join和get
时间: 2023-04-14 09:04:57 浏览: 95
CompletableFuture的join和get方法都可以用来获取异步计算的结果,但它们有一些不同之处。
join方法是一个阻塞方法,它会等待异步计算完成并返回结果。如果异步计算抛出异常,join方法会将异常包装成CompletionException并抛出。如果异步计算还没有完成,join方法会一直阻塞直到计算完成。
get方法也是一个阻塞方法,它也会等待异步计算完成并返回结果。但是,如果异步计算抛出异常,get方法会将异常包装成ExecutionException并抛出。此外,get方法还有一个超时参数,可以指定等待的最长时间。如果异步计算在超时时间内没有完成,get方法会抛出TimeoutException。
总的来说,join方法更加简单直接,适合于不需要处理异常或超时的场景。而get方法则更加灵活,可以处理异常和超时,但需要更多的代码来处理这些情况。
相关问题
CompletableFuture一定要get或join
CompletableFuture是Java 8引入的一个类,用于支持异步编程和并发操作。它提供了一种方便的方式来处理异步任务的结果,并允许我们以更灵活的方式组合多个异步任务。
CompletableFuture类中的get()和join()方法都用于获取异步任务的结果,但它们有一些细微的差别。
1. get()方法是阻塞的,它会一直等待直到异步任务完成并返回结果。如果异步任务没有完成,get()方法将一直阻塞当前线程。
2. join()方法也是用于获取异步任务的结果,但它是非阻塞的。如果异步任务没有完成,join()方法会立即返回一个CompletableFuture对象,我们可以继续执行其他操作。
需要注意的是,如果异步任务抛出了异常,get()和join()方法都会抛出ExecutionException异常,我们需要在代码中进行异常处理。
completablefuture.get()和join
CompletableFuture.get()和join()都是用于等待异步任务完成并返回结果的方法。
CompletableFuture.get()是一个阻塞方法,会一直等待异步任务完成并返回结果,如果异步任务出现异常,会抛出ExecutionException异常。
而join()也是一个阻塞方法,会等待异步任务完成并返回结果,但是如果异步任务出现异常,会抛出UncheckedExecutionException异常。
两者的区别在于异常处理方式不同,get()会抛出ExecutionException异常,需要使用try-catch语句进行处理,而join()会抛出UncheckedExecutionException异常,可以使用try-catch语句进行处理,也可以使用异常处理方法进行处理。