国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

異步的八種實現方案

開發 前端
我們在做接口性能優化的時候,經常需要把同步改成異步。那么你知道在Java中有哪些異步方案嗎?今天這篇文章就跟大家一起聊聊Java中的8種異步實現方案,希望對你會有所幫助。

前言

我們在做接口性能優化的時候,經常需要把同步改成異步。

那么你知道在Java中有哪些異步方案嗎?

今天這篇文章就跟大家一起聊聊Java中的8種異步實現方案,希望對你會有所幫助。

1.為什么需要異步編程?

同步處理的致命陷阱:當線程因I/O阻塞時,CPU資源被無效占用。

某電商大促期間,因支付服務響應從50ms惡化到2秒,訂單服務的200個線程在10秒內全被阻塞,引發鏈式雪崩。

異步編程的三大核心價值

  • 資源釋放:I/O等待時釋放線程,提升吞吐量(實測可達同步模式的3倍)
  • 故障隔離:單個服務異常不影響整體流程
  • 流量削峰:消息隊列緩存突發流量

2.異步的8種實現方案

方案1:線程與線程池

核心原理:物理線程實現并行

// 線程池最佳實踐
ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor(); // Java 21+
executor.submit(() -> {
    System.out.println("異步任務執行: " + Thread.currentThread().getName());
});

線程狀態機

適用場景:簡單異步任務,資源消耗較大。

方案2:Future

核心痛點:獲取結果時需阻塞線程

ExecutorService executor = Executors.newFixedThreadPool(2);
Future<String> future = executor.submit(() -> {
    Thread.sleep(2000);
    return "結果數據";
});

// 阻塞直到結果返回
String result = future.get();

致命缺陷

  • 無法鏈式任務依賴
  • 異常處理困難
  • 無超時控制(需手動實現)

方案3:CompletableFuture

它是JDK8+的首選。

革命性突破:非阻塞任務編排

CompletableFuture.supplyAsync(() -> fetchOrder(123))    // 階段1:獲取訂單
    .thenApplyAsync(order -> calculatePrice(order))     // 階段2:計算價格
    .thenAccept(price -> sendNotification(price))       // 階段3:發送通知
    .exceptionally(ex -> {                              // 統一異常處理
        log.error("處理失敗", ex);
        return null;
    });

鏈式調用原理

超時控制(JDK9+)

CompletableFuture.supplyAsync(() -> longTask())
    .orTimeout(2, TimeUnit.SECONDS)  // 超時中斷
    .whenComplete((res, ex) -> {
        if (ex instanceof TimeoutException) {
            // 超時處理
        }
    });

方案4:Spring @Async

它是企業級的簡易方案。

最佳實踐必須配置自定義線程池

@Configuration
@EnableAsync
publicclass AsyncConfig {
    @Bean("taskExecutor")
    public Executor taskExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(10);
        executor.setMaxPoolSize(50);
        executor.setQueueCapacity(100);
        executor.setThreadNamePrefix("Async-");
        return executor;
    }
}

@Service
publicclass OrderService {
    @Async("taskExecutor")
    public CompletableFuture<Order> createOrder(OrderDTO dto) {
        // 異步創建邏輯
        return CompletableFuture.completedFuture(order);
    }
}

避坑指南

  • 避免自調用(@Async失效)
  • 線程池參數動態調整
  • 監控隊列堆積預警

方案5:Spring事件

它是解耦利器。

典型場景:訂單創建后的短信、積分等輔助操作

// 定義事件
publicclass OrderCreatedEvent extends ApplicationEvent {
    private Order order;
    public OrderCreatedEvent(Object source, Order order) {
        super(source);
        this.order = order;
    }
}

// 發布事件
applicationContext.publishEvent(new OrderCreatedEvent(this, order));

// 監聽處理
@Component
publicclass BonusServiceListener {
    @Async// 異步處理
    @EventListener
    public void handleOrderEvent(OrderCreatedEvent event) {
        addBonus(event.getOrder().getUserId());
    }
}

方案6:消息隊列

它可以做分布式解耦。

架構設計

RocketMQ示例

// 生產者
Message msg = new Message("OrderTopic", "CREATE", orderJson.getBytes());
producer.send(msg);

// 消費者
consumer.subscribe("OrderTopic", "*", (msgs, context) -> {
    for (MessageExt msg : msgs) {
        processOrder(new String(msg.getBody()));
    }
    return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
});

可靠性保障

  • 事務消息(防丟失)
  • 死信隊列(防積壓)
  • 冪等消費(防重復)

方案7:響應式編程

它是高并發的巔峰。

Project Reactor核心模式

Flux.range(1, 100)
    .parallel() // 并行處理
    .runOn(Schedulers.parallel())
    .map(i -> intensiveCalculation(i))
    .subscribe(result -> updateDB(result));

背壓機制

適用場景:實時數據流處理(如股票行情推送)。

方案8:異步HTTP與非阻塞IO

Vert.x實戰

vertx.createHttpServer()
    .requestHandler(req -> {
        // 非阻塞處理
        dbClient.query("SELECT * FROM users", res -> {
            req.response()
               .putHeader("content-type", "application/json")
               .end(encodeJson(res.result()));
        });
    })
    .listen(8080);

與傳統BIO對比

指標

阻塞IO

非阻塞IO

線程數

1000請求=1000線程

1000請求=4線程

CPU利用率

低(上下文切換)

高(事件驅動)

吞吐量

< 5000 QPS

> 30000 QPS

3.常見問題

問題1:回調地獄(Callback Hell)

傳統寫法

serviceA.call(resultA -> {
    serviceB.call(resultA, resultB -> {
        serviceC.call(resultB, resultC -> {
            // 嵌套地獄!
        });
    });
});

CompletableFuture解法

CompletableFuture.supplyAsync(serviceA::call)
    .thenCompose(serviceB::call)
    .thenCompose(serviceC::call)
    .thenAccept(this::finalAction);

問題2:上下文丟失

解決方案:TransmittableThreadLocal

TransmittableThreadLocal<String> context = new TransmittableThreadLocal<>();

context.set("user123");
CompletableFuture.runAsync(() -> {
    System.out.println(context.get()); // 輸出user123
}, TtlExecutors.getTtlExecutorService(executor));

問題3:分布式事務一致性

Saga模式實現

4.性能壓測對比

方案

延遲(ms)

吞吐量(QPS)

線程數

適用場景

線程池

45

2,000

200+

簡單任務

Future

40


2,500

200+

需結果阻塞

CompletableFuture

25

8,000

50

復雜編排

@Async

30

7,000

50

Spring生態

消息隊列

60

12,000

20

分布式解耦

響應式編程

15

15,000

4

高并發流處理

非阻塞IO

10

30,000

4

網絡密集型服務

測試環境:AWS c5.4xlarge 16核32GB

5.異步編程的黃金法則

5.1 如何選型?

5.2 避坑指南

  • 死鎖預防:避免異步任務間循環依賴
  • 超時控制:所有異步操作必須設置超時
  • 冪等設計:消息重試可能導致重復消費
  • 上下文傳遞:異步時丟失ThreadLocal的解決方案:
// 使用TransmittableThreadLocal
try (Scope scope = context.wrap(task).bind()) {
    asyncTask.execute();
}

5.3 監控體系

  • 線程池指標:活躍線程數、隊列深度、拒絕次數
  • 消息隊列:積壓量、消費延遲
  • 鏈路追蹤:異步調用鏈可視化

總結

  • 初創期@Async + 線程池
  • 發展期:CompletableFuture任務編排
  • 高并發期:響應式編程 + 非阻塞IO
  • 分布式期:消息隊列 + 事務最終一致性

異步編程如同城市高架系統——  同步阻塞是地面道路,一輛事故就全局癱瘓;  異步非阻塞是立體交通,局部故障不影響全局通行。

沒有最好的方案,只有最適合場景的設計。

責任編輯:武曉燕 來源: 蘇三說技術
相關推薦

2021-11-22 12:35:40

Python命令定時任務

2023-11-03 14:42:36

異步執行開發架構

2021-11-04 08:53:00

if-else代碼Java

2019-01-17 10:58:52

JS異步編程前端

2022-12-20 15:17:29

CSS開發

2025-03-26 00:35:25

2022-07-01 08:00:44

異步編程FutureTask

2024-12-02 14:30:20

2024-03-26 12:08:53

分布式事務存儲

2011-06-09 13:48:48

程序員

2023-12-05 15:58:06

React開發

2024-01-31 08:38:57

Python定時任務函數

2022-05-24 10:43:02

延時消息分布式MQ

2023-11-20 13:52:00

Redis數據庫

2022-03-10 09:18:36

工業物聯網工業安全

2010-05-28 09:49:48

MySQL遠程連接

2023-09-19 15:33:50

Web實時消息推送

2024-08-01 11:38:40

2025-01-09 08:36:05

2016-10-27 21:33:46

ReduxFlux異步方案
點贊
收藏

51CTO技術棧公眾號

成人在线免费公开观看视频| 一区二区三区日韩欧美精品| 亚洲天堂久久久久久久| 久久的精品视频| 久久男人av资源网站| 男人j进女人j| 国产精品宾馆| 99久久精品免费看国产免费软件| 久久久三级国产网站| 99久久婷婷国产综合精品电影| 日日摸日日碰夜夜爽av| 色一情一乱一伦一区二区三欧美 | 欧美精品久久久久久久| 亚洲一二三区av| 久久福利影视| 在线视频观看一区| 中文字幕精品在线播放| 久久aimee| 亚洲福利在线视频| 在线日韩一区| 激情视频免费观看在线| 国产成人精品免费视频| 136国产福利精品导航| √天堂8在线网| 亚洲国产综合人成综合网站| 日韩理论片在线观看| 精品大片一区二区| 国产精品成人一区二区三区| av成人动漫在线观看| 亚洲最大成人网色| 亚洲国产精品综合久久久| 精品成人a区在线观看| 成熟丰满熟妇高潮xxxxx视频| 日韩亚洲国产免费| 日本成人7777| 久久精品人人爽人人爽| 高清欧美性猛交xxxx| 欧美日韩第二页| 久久久久久久久久久久电影| 亚洲色图清纯唯美| 精品国产免费久久久久久尖叫| 国产精品xnxxcom| 亚洲国产色一区| 国产wwww| 蜜桃视频在线一区| 成人黄色午夜影院| 国产精品一区二区黑丝| 亚洲free性xxxx护士hd| 国产精品1区在线| 欧美劲爆第一页| 国产成年精品| 久久精品久久久久久| 亚洲资源网站| 在线视频91| 一区二区三区日本| 欧美特大特白屁股xxxx| 3d蒂法精品啪啪一区二区免费| 国产亚洲成年网址在线观看| 免费av片风间由美在线| 久久综合影视| 欧美黄色三级网站| 精品视频一区二区三区在线观看| 色综合中文字幕国产| 欧美视频免费播放| 国产精品探花在线观看| 中文字幕一精品亚洲无线一区| 成人在线国产视频| 欧美丝袜丝交足nylons172| 亚洲电影免费观看| 四虎影视成人| 成人av综合在线| 国产成人女人毛片视频在线| 999www人成免费视频| 欧美最新另类人妖| 精品日韩一区二区| 97av视频在线观看| 菠萝蜜视频在线观看一区| 色综合久久久888| 毛片免费在线| 欧美一卡二卡在线观看| 国产精品区在线| 牛牛精品成人免费视频| 欧美精品精品精品精品免费| av中文在线| 国产91综合网| 一区二区不卡在线| av亚洲在线观看| 97色在线视频观看| 美女久久久久久| 日韩av免费看| 不卡一二三区| 色综合咪咪久久| 性xxxxfjsxxxxx欧美| 91精品福利视频| 国产黄色在线免费观看| 国产精品欧美日韩| 色综合久久久久| 国产精品videosex极品| 麻豆传媒在线观看| 精品欧美一区二区久久久伦| 国产精品久99| 亚洲专区视频| 亚洲天堂av线| 97香蕉久久夜色精品国产| 最新成人av在线| xxx欧美xxx| 成人在线视频电影| 一区二区三区小说| 国产视频网站一区二区三区| 丁香色欲久久久久久综合网| 久久精品国产一区二区三区| 日韩在线a电影| 免费人成在线观看网站| 久久免费少妇高潮久久精品99| 视频一区中文字幕国产| 麻豆传媒免费在线观看| 国产精品99蜜臀久久不卡二区| 亚洲国产成人av网| 久久久久久久久成人| 国产日产精品久久久久久婷婷| 666精品在线| 成人av网站免费观看| 在线国产小视频| 色综合久久综合网| 日本免费一区二区三区等视频| 国产精品91一区| 在线成人av| 久久久久久久久久久福利| 久久伊99综合婷婷久久伊| 色乱码一区二区三区在线| 伊人一区二区三区| 交100部在线观看| 国产一区视频免费观看| 欧美老女人性视频| 欧美午夜激情在线| 欧美1区2区3区| 久久久久毛片免费观看| 羞羞网站在线观看入口免费| 99电影网电视剧在线观看| 日韩一区二区精品| 久久婷婷av| 啪啪激情综合网| 加勒比日本影视| 欧美中日韩免费视频| 日本高清不卡视频| 欧美色图婷婷| 熟妇人妻va精品中文字幕 | 欧美精品性生活| 夜夜嗨av色综合久久久综合网| 欧美aⅴ99久久黑人专区| 午夜国产视频| 亚洲欧美一区二区原创| 日韩欧美电影在线| 99久久精品免费看国产| av免费网站在线观看| 伊人久久大香线蕉精品| 亚洲香蕉成视频在线观看| 美女www一区二区| 特级全黄一级毛片| 国内免费久久久久久久久久久| 亚洲高清成人| 福利视频一区| 亚洲jjzzjjzz在线观看| 欧美成人激情图片网| 午夜视频一区在线观看| bt欧美亚洲午夜电影天堂| 久久精品视频网| 国产一区欧美一区| 麻豆av在线免费观看| 国产精品一区二区三区毛片淫片| 久久久久久免费毛片精品| 天堂影院在线| 91色精品视频在线| 日韩精品中文字幕久久臀| 亚洲欧洲99久久| 国产欧美日韩综合一区在线播放| 日韩在线观看| 日韩中文字幕在线一区| 91精品xxx在线观看| 久久人体av| 欧美激情15p| 亚洲香蕉网站| 国产美女精品人人做人人爽| 国产乱码精品一区二区三区五月婷 | 国产欧美日韩不卡| 热久久一区二区| 日av在线不卡| 99国产精品视频免费观看| 大桥未久av一区二区三区| 一区二区中文字幕| 国产欧美日韩中文字幕在线| 国产91沈先生在线播放| porn亚洲| 99国产**精品****| 国产精品国产三级国产a| 亚洲男人天堂2024| www.久久久| 免费福利在线观看| 精品一区二区三区的国产在线观看| 亚洲国产高清在线|