大家好,我是一个捡起蜗牛的小男孩。
本文是后端思维列的第二部分。接下来,我将添加一个鞭子,写第二篇文章:教您编写并行呼叫模板。
如果您让您设计一个应用主页查询界面,则需要检查用户信息,检查信息,标签信息等。一般而言,朋友将意识到以下内容:
此代码是否有任何问题?实际上,这是一个非常普通的代码,但是在这种方法中,查询用户,横幅和标签信息是串行的。如果查询用户信息,查询横幅信息和查询标签信息,则需要时间。
实际上,为了优化性能,我们可以修改并行通话的方法,该方法可以简化为时间,如下图所示:
如何实现上述示例的平行呼吁?
一些朋友说,可以使用并行呼吁多个任务。但是,当线程池执行批处理任务时,将获得返回值。如果先前的任务执行时间为耗时,则该方法将阻止并形成队列等待。
取而代之的是,定义是打包的,并且可以在生成任务时生成任务的返回值。请单独执行这两个内容,任务不会互相阻止,并且可以获得第一个任务结果。
实施原则相对简单。底层是由任务首先通过futuretask+阻止队列获得的,也就是说,任务的执行结果是按完成顺序排序的。内部有一个高级阻止队列,用于保留未来,以保留未来已执行。您可以获取民意调查或采用您致电的方法,以获得已执行的未来。
接下来,让我们看一下如何使用它来实现并行查询应用程序主页信息。考虑到以下内容:
到目前为止,已经实现了基于实现并行呼叫的示例。您很高兴,哈哈。
我们回来观察第二部分并查询应用程序信息的演示:实现的并行呼叫。您还有其他想法吗?要参与类似第二部分的一组代码。
根据第二部分的代码,我们如何提取常见的并行调用方法?
首先,这种通用的并行呼叫方法不能链接到与业务相关的属性,对,那么参数方法应该是什么?
可以输入方法的方法,对吗?由于并行,必须有多个callace任务。因此,输入参数应该是一个数组。类型,对吗?所以参数是。
并排的人参呢?您有多个任务,您必须返回多个相应的回报吗?因此,您的差距可以是。我们绘制的通用并行呼叫模板可以写成紫色:
既然我们正在绘制一种常见的并行调用方法,那么是否有任何改进上述方法的地方?
让我们再次优化此通用并行呼叫模板,代码如下:
如果将来需要在其他场景中使用并行呼叫,只需直接调用您的方法。这有点成就感吗?哈哈。
我们应用于抽奖提取的公共并行调用方法的示例如下:
基于上述代码,您是否还有优化想法的其他方面?例如,我们可以绘制它吗?使代码更加简洁。
更不用说,现在我们直接构建一个课程以实现接口,并将查询用户信息,查询横幅信息和标签标签信息的查询任务。
代码显示如下:
上述代码中的构造函数中仍然有许多参数,并且有多种方法。如果添加了分支(例如查询浮动层信息),则必须在方法中修改它,并且basetaskCommand的构造函数是Alsoto修改的。
是否每个人都印象深刻,当多次... else ...在多个程序中,我们可以考虑使用战略模式+出厂模式优化。
我们声明了多种策略实施类,如下:
那么这些策略如何实施该类,我该如何将其提供给管理层?我们可以实现界面,将实施类注入地图,然后根据不同的战略请求类型实现不同的战略类调用(即,即,即,DTO的类型)。实际上,这类似于工厂模型。代码显示如下:
借助战略工厂课程,我们将回来优化代码。它不需要多个构造函数,只需要战略工厂类。在同一时间,策略不需要多个判断,您可以用策略工厂替换它类。优化代码如下:
因此,可以优化整个查询,如下所示:
上面的代码整体优化了,它已经非常简单。还有其他优化想法吗?
实际上,例如,仍然有唯一标签的定义是列举的,而不是编写死弦。此外,除了一些朋友还喜欢使用并行呼叫。
您在本文中学到什么知识?
在本文中,设计模式不是很详细,然后下一篇文章告诉您如何根据现有代码提取设计模式。然后,如果您需要本文的完整代码,则可以注意我的公共帐户:拿起蜗牛的小男孩,其中有我的联系信息。
原始:https://juejin.cn/post/7098874204468019236