magic-api实现多线程,确保线程安全的变量

magic-api实现多线程,确保线程安全的变量


前言

最近项目中使用到magic-api做接口的快速开发,由于业务需要使用多线程提供查询效率,特此记录,便于以后查找

一、magic-api是什么?

官网介绍:
magic-api是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口。 无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发
官网地址:
https://www.ssssssss.org/magic-api/

2.如何实现多线程

magic-api采用异步调用的方式实现多线程,使用关键字async 官方示例如下
在这里插入图片描述
官网地址:https://www.ssssssss.org/magic-api/pages/base/async/
在实际使用中存在变量安全性问题,由于使用async关键字会另起一个线程执行,当每个线程需要传入不同变量时,直接使用for循环会存在同一个变量重复执行问题,针对这一问题采用函数(理解为一个java方法,如何定义函数详见官方示例 https://magic-api.ssssssss.org.cn/magic/web/index.html)解决
示例代码:

import '@/from/tableDataList' as getTableDataList; //引入函数

var sql= """
     SELECT table_name AS tableName FROM table
"""
//查询所有的表
var tableList = db.select(sql);
//结果列表
var resultList = [];
for(table in tableList){
    //异步执行 多线程
    table.put("xxx",'xxx'); //table对象中可以添加自定义参数
    resultList.add(async (table)=>getTableDataList(table));
}
resultList = resultList.map(item=>item.get());  // 循环获取结果
//倒序排列
var resultSort = resultList.sort((a,b)=>a.value - b.value);
return resultSort ;

采用调用一个函数,将变量作为形参传入的方法可以确保线程安全的变量

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悬崖边边上的紫藤萝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值