多线程请求第三方教育数据接口优化

本文介绍了在处理需要批量请求第三方接口获取学生学习数据的需求时,由于接口承载量有限且数据实时性要求高,采用多线程进行优化的方法。通过创建线程类实现Callable接口,并在业务层调用,分析了预处理数据数量(preNum)对性能的影响,发现当preNum与线程池大小相当时,两种方法耗时相差不大,但preNum过大时,切割列表会增加耗时。与单线程相比,多线程请求数据的时间显著减少,大约为单线程的三分之一。同时,使用newFixedThreadPool线程池可以控制并发数并避免任务阻塞。
摘要由CSDN通过智能技术生成

目录

 

一、需求

二、实现

三、分析


一、需求

Q:业务过程中遇到一个问题:

1.有一批数据,其中每个数据都需要请求第三方接口返回学生学习数据

2.第三方没有批量请求接口,第三方接口承载量有限,学生答题数据实时性要求高

3.请求返回的数据要返回给前端,对时效有要求。

以上,所以想用多线程批量调用对方接口,试着缩短接口响应时间。

二、实现

  1. 新建线程类实现callable接口
public class BatchCallThreadJob implements Callable<V> {
	
	private List<Map<String,Object>> list;
	
	private int threadCount;
	
	private String faceUrl;	
	
	public BatchCallThreadJob(List<Map<String,Object>> list, int threadCount,
			String faceUrl) {
		this.list = list;
		this.threadCount = threadCount;
		this.faceUrl = faceUrl;
	}
	
	@Override
	public V call() throws Exception {
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值