Javaで非同期処理を同期処理に変換する方法

Javaで非同期を同期する方法には、以下にいくつかの一般的な方法を示します。

  1. CountDownLatchを使用する
CountDownLatch latch = new CountDownLatch(1);

// 异步操作
new Thread(() -> {
    // 执行异步操作
    // ...

    // 操作完成后释放锁
    latch.countDown();
}).start();

// 等待异步操作完成
latch.await();
  1. FutureとCallableを使用して
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<T> future = executor.submit(new Callable<T>() {
    public T call() throws Exception {
        // 执行异步操作
        // 返回结果
        return result;
    }
});

// 阻塞并获取异步操作的结果
T result = future.get();
  1. CompletableFutureを使用する
CompletableFuture<T> future = CompletableFuture.supplyAsync(() -> {
    // 执行异步操作
    // 返回结果
    return result;
});

// 阻塞并获取异步操作的结果
T result = future.join();

状況や条件によって必要に応じて、上記の方法を活用して非同期から同期への変更が実現します。

bannerAds