Javaで任意の処理にタイムアウトを設定

Created 2022年3月8日10:29
Updated 2022年3月8日10:30
Categories Java

CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
    try {
        Thread.sleep(2000);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return 0;
});
try {
    future.get(1000, TimeUnit.MILLISECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException ex) {
    ex.printStackTrace();
}

FutureやCompletableFutureを使うと実現できるようです。

CompletableFutureは非同期にメソッドチェーンができたり複数の非同期処理をまとめたりとできることが多くちょっとオーバースペックかなと思ったのですが、まぁどっちでもできるっぽいので今回はCompletableFutureを使ってみました。

コメントを投稿

コメント