• java项目利用线程池,同时执行多个需求,返回数据,加快速度


    使用线程池还是挺快的,提升了50%左右

    1. package com.quxiao.controller;
    2. import com.alibaba.fastjson2.JSON;
    3. import lombok.Data;
    4. import java.util.*;
    5. import java.util.concurrent.CompletableFuture;
    6. import java.util.concurrent.ExecutorService;
    7. import java.util.concurrent.Executors;
    8. /**
    9. * @program: package1
    10. * @author: quxiao
    11. * @create: 2023-09-11 15:10
    12. **/
    13. public class t2 {
    14. public static void main(String[] args) {
    15. // long l = System.currentTimeMillis();
    16. // for (int i = 0; i < 10; i++) {
    17. // check();
    18. // }
    19. // System.out.println("顺序执行耗时:" + (System.currentTimeMillis() - l));
    20. ExecutorService executor = Executors.newFixedThreadPool(10);
    21. long l = System.currentTimeMillis();
    22. //顺序执行耗时:11600
    23. CompletableFuture async1 = CompletableFuture.supplyAsync(() -> check(), executor);
    24. System.out.println("1");
    25. CompletableFuture async2 = CompletableFuture.supplyAsync(() -> check(), executor);
    26. System.out.println("1");
    27. CompletableFuture async3 = CompletableFuture.supplyAsync(() -> check(), executor);
    28. System.out.println("1");
    29. CompletableFuture async4 = CompletableFuture.supplyAsync(() -> check(), executor);
    30. System.out.println("1");
    31. CompletableFuture async5 = CompletableFuture.supplyAsync(() -> check(), executor);
    32. System.out.println("1");
    33. CompletableFuture async6 = CompletableFuture.supplyAsync(() -> check(), executor);
    34. System.out.println("1");
    35. CompletableFuture async7 = CompletableFuture.supplyAsync(() -> check(), executor);
    36. System.out.println("1");
    37. CompletableFuture async8 = CompletableFuture.supplyAsync(() -> check(), executor);
    38. System.out.println("1");
    39. CompletableFuture async9 = CompletableFuture.supplyAsync(() -> check(), executor);
    40. System.out.println("1");
    41. CompletableFuture async10 = CompletableFuture.supplyAsync(() -> check(), executor);
    42. System.out.println("1");
    43. //确认所有的数据都已经处理完了
    44. CompletableFuture.allOf(async1, async2, async3, async4, async5, async6, async7, async8, async9, async10).join();
    45. System.out.println("1");
    46. System.out.println("顺序执行耗时:" + (System.currentTimeMillis() - l));
    47. }
    48. private static String check() {
    49. for (int j = 0; j < 50000000; j++) {
    50. String s = "" + j + j;
    51. }
    52. return "ok";
    53. }
    54. }
  • 相关阅读:
    linux常见命令
    桌面显示计算机信息,并实现批处理自动化
    【UniApp】-uni-app-OptionAPI应用生命周期和页面生命周期
    【学习笔记77】ajax的函数封装
    几种常见注册中心的区别
    Arduino应用开发——SD卡
    回溯算法解决N皇后问题以及个人理解
    Qt之QSqlDatabase 添加自定义物理键盘输入法
    一文搞懂前端兼容问题
    vue3前端开发-小兔鲜项目-添加购物车操作第一步
  • 原文地址:https://blog.csdn.net/qx020814/article/details/132887690