java 等待异步操作 完成
时间: 2023-06-30 19:03:01 浏览: 143
asyncwait:用于等待多个异步操作完成的 JS 助手
在 Java 中,等待异步操作完成有多种方式:
1. 使用 Future 和 Callable:创建一个 Callable 对象,将它提交给 ExecutorService 执行,得到一个 Future 对象。可以使用 Future#get() 方法来等待 Callable 执行完成,该方法会阻塞当前线程直到任务完成并返回结果或者抛出异常。
2. 使用 CountDownLatch:创建一个 CountDownLatch 对象,然后在异步任务完成时调用 CountDownLatch#countDown() 方法来减少计数器的值,主线程可以调用 CountDownLatch#await() 方法来等待计数器的值变为0,这样就阻塞了主线程,直到异步任务完成。
3. 使用 CompletableFuture:CompletableFuture 类提供了非常方便的异步编程接口,可以使用 CompletableFuture#get() 方法来等待异步任务完成。
4. 使用 wait 和 notify:使用 synchronized 关键字来实现线程同步,然后使用 wait 方法来等待异步任务完成,异步任务完成时调用 notify 方法来唤醒等待的线程。
需要注意的是,在使用以上任何一种方式等待异步任务完成时,都应该避免在主线程中使用 Thread.sleep() 等方法来阻塞线程,因为这样会浪费 CPU 资源。
阅读全文