Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过简单配置构建异步数据加载_Java_Spring_Multithreading_Threadpool - Fatal编程技术网

Java 如何通过简单配置构建异步数据加载

Java 如何通过简单配置构建异步数据加载,java,spring,multithreading,threadpool,Java,Spring,Multithreading,Threadpool,我的web应用程序中有一个进程,它只是一系列CRUD请求。订单通常是严格的,唯一的区别是每个进程的Id都不同。我想进行“异步”数据加载。例如: 用户请求执行步骤1 服务器给他/她的响应,一旦服务器构建完整的响应,它就开始构建步骤2、3、5的数据。。。然后把它放在缓存里 我的问题是:你能建议什么机制使它简单易读吗?这是“主要要求”。春天有什么东西吗?(WebFlux不适合该架构)我认为您可以使用生产者-消费者设计模式 例如。 1.从客户端获取请求,执行步骤1工作。 2.响应客户端。 3.创建一个任

我的web应用程序中有一个进程,它只是一系列CRUD请求。订单通常是严格的,唯一的区别是每个进程的Id都不同。我想进行“异步”数据加载。例如:

  • 用户请求执行步骤1
  • 服务器给他/她的响应,一旦服务器构建完整的响应,它就开始构建步骤2、3、5的数据。。。然后把它放在缓存里
    我的问题是:你能建议什么机制使它简单易读吗?这是“主要要求”。春天有什么东西吗?(WebFlux不适合该架构)

    我认为您可以使用
    生产者-消费者设计模式

    例如。
    1.从客户端获取请求,执行步骤1工作。
    2.响应客户端。
    3.创建一个
    任务实体
    ,然后将其添加到
    任务队列

    4.Http工作线程结束。
    5.在另一个线程中执行步骤2-N。并将结果放入缓存

    对于框架来说,这是一个不错的选择。
    RxJava
    可能也不错


    您可以自己实现。

    如果您使用的是SpringBoot体系结构,您可以使用注释@Async。这使得它变得非常简单,因为您提到,顺序是必要的,这意味着首先拾取的进程应该首先完成,然后处理器可以拾取任何其他进程,因此在使用spring异步功能时,您可以将线程计数(在threadpoolexecutor中)设置为1