91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java異步調用 如何處理超時

小樊
81
2024-11-24 00:19:38
欄目: 編程語言

在Java中,可以使用java.util.concurrent包中的工具來處理異步調用的超時。以下是一些建議的方法:

  1. 使用CompletableFutureorTimeout方法:
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;

public class AsyncTimeoutExample {
    public static void main(String[] args) {
        CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
            // 模擬長時間運行的任務
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "異步任務結果";
        });

        CompletableFuture<String> timeoutFuture = future.orTimeout(3, TimeUnit.SECONDS);

        try {
            String result = timeoutFuture.get();
            System.out.println("異步任務結果: " + result);
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            System.out.println("異步任務超時");
            future.cancel(true); // 取消超時任務
        }
    }
}
  1. 使用ExecutorServiceFutureget(timeout, unit)方法:
import java.util.concurrent.*;

public class AsyncTimeoutExample {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newSingleThreadExecutor();
        Future<String> future = executor.submit(() -> {
            // 模擬長時間運行的任務
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "異步任務結果";
        });

        try {
            String result = future.get(3, TimeUnit.SECONDS);
            System.out.println("異步任務結果: " + result);
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            System.out.println("異步任務超時");
            future.cancel(true); // 取消超時任務
        } finally {
            executor.shutdown();
        }
    }
}

在這兩個示例中,我們分別使用CompletableFutureExecutorService來執行異步任務,并設置超時時間。如果任務在指定的時間內未完成,將拋出TimeoutException,我們可以捕獲該異常并取消任務。

0
靖边县| 禄丰县| 永年县| 临城县| 阿城市| 临泉县| 镇安县| 洪湖市| 阜新市| 沧源| 蓬莱市| 本溪市| 浏阳市| 吉林省| 松溪县| 凤冈县| 库尔勒市| 永平县| 扎赉特旗| 荔浦县| 乌什县| 康乐县| 井陉县| 淳化县| 剑河县| 九龙坡区| 东乡| 普宁市| 梁平县| 九江县| 榆社县| 墨竹工卡县| 毕节市| 伊春市| 临猗县| 拉孜县| 宜城市| 中阳县| 龙门县| 怀来县| 新余市|