问题描述
每间隔获取不同的数据就是指程序一点开始后就不行的循环去取POST的数据,如果有多个网站上的数据要取是不是创建多个线程?不知道以下对不对请指教privatevoidbtnStart_Click(objectsender,EventArgse){ThreadgetOrderThread1=newThread(newThreadStart(this.GetOrders1));getOrderThread1.SetApartmentState(ApartmentState.STA);getOrderThread1.IsBackground=true;getOrderThread1.Start();ThreadgetOrderThread2=newThread(newThreadStart(this.GetOrders2));getOrderThread2.SetApartmentState(ApartmentState.STA);getOrderThread2.IsBackground=true;getOrderThread2.Start();ThreadgetOrderThread3=newThread(newThreadStart(this.GetOrders3));getOrderThread3.SetApartmentState(ApartmentState.STA);getOrderThread3.IsBackground=true;getOrderThread3.Start();}privatevoidGetOrders1(){while(true){try{//获取订单1方法}catch(ThreadInterruptedExceptionex){}}}privatevoidGetOrders2(){while(true){try{//获取2订单方法}catch(ThreadInterruptedExceptionex){}}}privatevoidGetOrders3(){while(true){try{//获取3订单方法}catch(ThreadInterruptedExceptionex){}}}
解决方案
解决方案二:
理论上说是可以的,理论上说多线程是并发执行,但是实际上还是遵循CPU的时间片轮转执行,每个线程都很忙碌或者处理时间较长的话难免出现阻塞的问题。如果单个线程可以用while循环来做,多了的话建议采用事件触发来做,起线程专门处理触发的事件,这样更合理也更有效率。
解决方案三:
线程数控制在10个左右就好,再多没意义
解决方案四:
不用,Web本身就是多线程的,最好用AJAX写在JS里面
解决方案五:
线程数是cpu核心数的两倍左右比较好
解决方案六:
http://bbs.csdn.net/topics/391863106
解决方案七:
http://www.cnblogs.com/yuqilin/archive/2011/10/21/2218833.html
解决方案八:
嗯呢线程太多也不行多搞几个触发事件也不能让线程一直跑你说是不是……
解决方案九:
每个网站一个线程去获取,100个网站就要100个线程,一一对应,因为你这里是网络I/O操作,普通的线程理论已经不适用了。你也可以直接使用异步方法来请求。