多线程执行同个任务,该怎么解决
多线程执行同个任务
项目中需要批量数据调用接口返回状态,并更新至数据库,怕真实环境中调用接口时间太久,经理要求使用多线程去处理,网上查看了相关资料,发现都是多线程执行的是不同的方法,怎样怎能做的多个线程执行同个方法?
比如:现在选择100条数据,循环调用接口,怎样使用多线程同步处理
for(int i=0;i<1000;i++)
{
//调用接口
//更新数据库
}
------解决思路----------------------
多线程执行同个方法,也要加不同参数
否则多线程执行的是完全相同的代码,这样做是没有意义的行为
------解决思路----------------------
可以定义线程函数:
void ThFunc(object o){//这里写你的接口方法,通过传递进不同的o,进行不同的处理};
for(int i=0;i<1000;i++)
{
Thread th=new Thread(ThFunc);
th.Start(i);
}
------解决思路----------------------
当然是并行啊....
------解决思路----------------------
思路最好再设计下。实际上你的接口能支持多少并发我不知道,但更新数据库最好串行的去做
直接按你说的实现倒是简单:
ParallelEnumerable.Range(0, 1000).ForAll(i =>
{
//调用接口
//更新数据库
});
------解决思路----------------------
更新到数据库那多线程有太多含义么?
------解决思路----------------------
都调用同个接口,每个线程也要传递进不同的参数去调用才对吧
否则这样做有任何意义??
都是同样的数据,同时向数据库里update,你开10000个线程跟开1个有什么区别?
------解决思路----------------------
产生脏数据怎么办?
------解决思路----------------------
可否将接口分组, 然后一组分配一个线程来处理~
这样,一个线程请求接口时间长,那也只是这一组的执行时间延长……
项目中需要批量数据调用接口返回状态,并更新至数据库,怕真实环境中调用接口时间太久,经理要求使用多线程去处理,网上查看了相关资料,发现都是多线程执行的是不同的方法,怎样怎能做的多个线程执行同个方法?
比如:现在选择100条数据,循环调用接口,怎样使用多线程同步处理
for(int i=0;i<1000;i++)
{
//调用接口
//更新数据库
}
------解决思路----------------------
多线程执行同个方法,也要加不同参数
否则多线程执行的是完全相同的代码,这样做是没有意义的行为
------解决思路----------------------
可以定义线程函数:
void ThFunc(object o){//这里写你的接口方法,通过传递进不同的o,进行不同的处理};
for(int i=0;i<1000;i++)
{
Thread th=new Thread(ThFunc);
th.Start(i);
}
------解决思路----------------------
当然是并行啊....
tasks.parallel.for(0,100,(i)=>{
//调用接口...
});
------解决思路----------------------
思路最好再设计下。实际上你的接口能支持多少并发我不知道,但更新数据库最好串行的去做
直接按你说的实现倒是简单:
ParallelEnumerable.Range(0, 1000).ForAll(i =>
{
//调用接口
//更新数据库
});
------解决思路----------------------
更新到数据库那多线程有太多含义么?
------解决思路----------------------
都调用同个接口,每个线程也要传递进不同的参数去调用才对吧
否则这样做有任何意义??
都是同样的数据,同时向数据库里update,你开10000个线程跟开1个有什么区别?
------解决思路----------------------
产生脏数据怎么办?
------解决思路----------------------
可否将接口分组, 然后一组分配一个线程来处理~
这样,一个线程请求接口时间长,那也只是这一组的执行时间延长……