方法封装与多线程
在实际开发中,可能会遇到如下情况:
后端另起一个线程执行,先将结果返回给前端。
然后发现在项目中,很多地方都有这样的需求,比如excel导出,先查询后端数据再写入excel中返回给前端,这样会导致请求相对的缓慢,我们可以通过websocket,先将后端操作的通知给前端,后端另起线程执行excel导出的功能,导出完毕后,再通过websocket将结果通知给前端。
问题是很多地方都要这样写,只有导出的数据不一样,其他完全一样,我想我可以封装成一个公用方法,在公用方法上,将数据替换。
很不幸的是,获取数据量过多,这点我不得不放在线程中来查询,那么问题来了:如何在线程中替换查询结果?
就这个问题,我在网上找到了解决方法,以下是我总结的一些个人经验。
函数式接口
自定义一个接口,作用是此接口可以在参数中接收传递过来的方法
/**
* @author lc
*/
public interface MethodAction {
/**
* 构建数据集合
* @param params
* @return
*/
List<?> buildList(Object params);
}
使用
/**
* 类说明
*
* @author lc
* @since 2022/5/13
*/
@SpringBootTest
@RunWith(SpringRunner.class)
public class MethodTest {
@Resource
private UserService userService;
@Test
public void TestMethodRun(){
JSONObject params = new JSONObject();
params.put("deptId","123456789");
val o = runAction(params, x -> userService.getList(params));
System.out.println(o);
}
public List<?> runAction(Object obj, MethodAction<T> function){
return function.buildList(obj);
}
}
这样我们就可以通过将方法当作参数,传递给封装方法使用了的方法使用了,线程这里就不多说了,就这样
本文探讨了在Java开发中如何封装方法并利用多线程处理耗时任务,例如Excel导出。通过创建函数式接口,可以将方法作为参数传递,实现在后台线程中执行特定操作,从而提高前端响应速度。文章介绍了具体实现过程和接口设计思路。
10万+

被折叠的 条评论
为什么被折叠?



