扫码关注官方订阅号
java中一个方法同一时间被调用1000次,如何控制一次只处理100次,然后10次处理完,调用请求如何处理呢
认证0级讲师
为什么要这么做,我觉得可能是个XY问题。
假设你有数据data,使用方法function funcX(Data arg_data)来进行处理。
那么,处理一次数据,就是这么用:funcX( data )。
现在,有1000条数据:data1、data2....data1000,那么,需要这样处理:funcX( data1 )、funcX( data2 )....funcX( data1000 )这种处理,正如你所说,需要进行1000次。
然而,你希望每次处理100条,只处理10次,那么,应该这样:第1次:funcX( data1-100 )第2次:funcX( data101-200 )...第10次:funcX( data901-1000 )对吧?
所以也很简单啊,改成数组就行了:funcX( Data arg_data ) 改成处理数组的版本:funcXArray( Data[] arg_dataArray )然后:第1次:data[100] dataArray1_100; funcXArray( dataArray1_100 );第2次:data[100] dataArray101_200; funcXArray( dataArray101_200 );...第10次:data[100] dataArray901_1000; funcXArray( dataArray901_1000 );
使用Fork/Join框架
Fork/Join
和@laminux29的相似,对要处理的任务编号 ,分别是1、2、3...1000,分别起10个线程,这十个线程分别处理1-100、101-200、201-300...的数据。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
为什么要这么做,我觉得可能是个XY问题。
假设你有数据data,使用方法function funcX(Data arg_data)来进行处理。
那么,处理一次数据,就是这么用:
funcX( data )。
现在,有1000条数据:data1、data2....data1000,那么,需要这样处理:
funcX( data1 )、funcX( data2 )....funcX( data1000 )
这种处理,正如你所说,需要进行1000次。
然而,你希望每次处理100条,只处理10次,那么,应该这样:
第1次:funcX( data1-100 )
第2次:funcX( data101-200 )
...
第10次:funcX( data901-1000 )
对吧?
所以也很简单啊,改成数组就行了:
funcX( Data arg_data ) 改成处理数组的版本:funcXArray( Data[] arg_dataArray )
然后:
第1次:data[100] dataArray1_100; funcXArray( dataArray1_100 );
第2次:data[100] dataArray101_200; funcXArray( dataArray101_200 );
...
第10次:data[100] dataArray901_1000; funcXArray( dataArray901_1000 );
使用
Fork/Join框架和@laminux29的相似,对要处理的任务编号 ,分别是1、2、3...1000,分别起10个线程,这十个线程分别处理1-100、101-200、201-300...的数据。