“在计算机体系结构中,多线程是中央处理单元 (CPU)(或多核处理器中的单核)在 *** 作系统支持下同时提供多个执行线程的能力。”
为了解释多线程,我们可以使用人脑进行类比。假设您想一边说话,一边走路,您的大脑为了不让你每次说话都停下来,就会分配资源并同时完成两项工作。这就是多线程。如今,现代编程技术都允许应用程序划分它们的处理时间(也就是大脑),并同时运行多个不同的工作任务。
现在就让Mendix应用程序使用多线程吧!
01 ExecuteMicroflow-InBackground在Mendix 8和之前的版本中,使应用程序成为多线程的最简单快捷的方法是从市场下载Community Commons函数库并使用名为executeMicroflowInBackground的Java Action。为此,请从微流调用Java Action。该 *** 作需要两个参数才能工作:上下文对象(可以为空)和要调用的微流的名称。
请从微流调用 Java Action
这是针对长时间运行的进程带来的不友好体验所做一个Java Action,并确保这些进程可以在主进程完成时在后台完成。
02 Process Queue另一种选择是使用Process Queue模块,也可在Marketplace中找到,具体的使用方式可以在参考资料中获取。随着 Mendix 9的发布,使用Process Queue变得更加简单。
03 任务队列 Task Queue最新的Mendix 9已经把多线程集成在系统层面,Task Queue基于 Process Queue模块,但为了简化开发,它现在包含在Studio pro中,让开发者可以更便捷使用这个功能。
Task Queue有如下几个特点:
- Task Queue支持多节点集群设置,因此可以在水平扩展的集群环境中使用。
- Task Queue不要求创建额外的实体,因为微流或Java Action现在可以简单地通过标注的方式,直接放在后台执行。
- Task Queue尚不支持失败任务的自动重试,但相信不久的将来可以实现这个功能。
如果您想尝试使用任务队列Task Queue,可以通过以下几个步骤完成:
- 右键单击项目资源管理器中的模块或文件夹
- 选择add other
- 单击Task Queue
- 输入线程数的值
通过简单的4个步骤,就可以实现系统层面的多线程。现在,当一个微流调用另一个微流或者Java Action时,您都会看到在任务队列中执行它们的选项。如果选中“Execute this Microflow in a Task Queue”,可选择之前创建的队列。当某个微流被调用时,它会在自己的独立线程中执行。
04 知识点分享- 线程按顺序流程FIFO(先进先出)执行,但这并不意味着它们会以任何特定顺序执行。和传统Java开发一样,您无法确定微流按特定顺序执行,因此在执行的时候,要确保线程之间没有依赖关系,或者需要等待其他线程的输出结果。
- 您可以使用的唯一参数类型是Mendix的固有数据类型,包括布尔型、整数/长整型、十进制、字符串、日期和时间、枚举和可以提交的持久实体。
- 线程将按照系统级权限执行,因此不能在线程的逻辑中使用用户上下文(User Context)。
- 一个线程只会在它完成任何调用后启动。这意味着它只会在创建线程的微流或 Java *** 作完成后触发。这是因为不可能在事务中间创建新线程。
- 单个节点的最大线程数为40。
- 添加的线程越多,服务器上的负载就越大。通常两三个线程就足够了。
- 一个名为Queue的日志节点专门用于与任务队列相关的所有 *** 作。
- Marketplace中有一个任务队列助手模块,其中包含用于监控队列的页面和概述。
参考资料
[1] https://docs.mendix.com/refguide/task-queue#3-monitoring
[2] https://docs.mendix.com/appstore/modules/process-queue
[3] https://docs.mendix.com/refguide/task-queue#process-queue
[4] https://docs.mendix.com/refguide/task-queue
更多信息,请访问以下链接:
Mendix官网:低代码应用开发平台 - 快速高效地构建应用 | Mendix
Mendix中国论坛:Mendix开发者论坛-加入Mendix开发者论坛,一起引领创新。
Mendix行业解决方案:Low-Code Solution Gallery | Customizable Solutions For Every Industry
Mendix平台指南:Low-Code Application Development Platform evaluation Guide | Mendix
Mendix动画展示:Application Development Demos – Mendix Low-Code Platform
感谢阅读!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)