有没有专门的一个类库是能做到的?自己写多线程的话,会有一定限制。。因为首先内存限制了最大能开启多少线程而且在实际应用中,如果用循环里启动thread的方式,例如以下for(.......){
Thread t = new TestThread()
t.start()}当thread数目累计到一定时候,t.start()不是在实例化之后立刻执行,而是等待了几秒。。用了线程池ExecutorSerivce也是如此实际需求是至少每秒几百个http请求,总共上万个,而每秒最多能发送到指定url的数目是有限制的,如果按以上情况,等待了几秒后发送http请求,会造成前一秒发送 100个http request,后一秒 发送300个http request ,而每秒最大只能200个。。
Thread t = new TestThread()
t.start()}当thread数目累计到一定时候,t.start()不是在实例化之后立刻执行,而是等待了几秒。。用了线程池ExecutorSerivce也是如此实际需求是至少每秒几百个http请求,总共上万个,而每秒最多能发送到指定url的数目是有限制的,如果按以上情况,等待了几秒后发送http请求,会造成前一秒发送 100个http request,后一秒 发送300个http request ,而每秒最大只能200个。。
2. new 200个thread (可以用线程池)独立从上面的list去url去请求;注意List同步要做好,避免同一个url被几个thread取到。这样200个线程一旦启动了,它们都会努力的工作,并且先进去的url会优先被处理。
另:绝对的实时是没有的.
测试并发效果吗
如果是的话,试试apache的ab工具
比自己写并发节约时间,而且更容易对比
个人认为没有其他更好的办法,因为所有的线程都已经满负荷工作了(请求完一个,马上请求下一个),并且从宏观的角度看,总有200个请求在并行处理。可能你的问题是,希望有个一个url要处理,马上就处理掉;可现实是不允许的,因为你最多就只允许同时200个;第201个就必须得等。
我也看不懂,但有一个可以考虑的场景,那就是并行的http的download,呵呵!