有没有专门的一个类库是能做到的?自己写多线程的话,会有一定限制。。因为首先内存限制了最大能开启多少线程而且在实际应用中,如果用循环里启动thread的方式,例如以下for(.......){
   Thread t = new TestThread()
    t.start()}当thread数目累计到一定时候,t.start()不是在实例化之后立刻执行,而是等待了几秒。。用了线程池ExecutorSerivce也是如此实际需求是至少每秒几百个http请求,总共上万个,而每秒最多能发送到指定url的数目是有限制的,如果按以上情况,等待了几秒后发送http请求,会造成前一秒发送 100个http request,后一秒 发送300个http request ,而每秒最大只能200个。。

解决方案 »

  1.   

    并行=同时发送这个还不好理解么如果把url放到list里,循环去发送http request,那不叫并行,那是线性, 因为要等待每个http请求的响应之后才能发下一个
      

  2.   

    如果服务端只能同时接受200个,那就精准控制任何时刻最后不超过200个请求;实现如下,1. 所有的url装到list中,这个list被所有的thread (下面说的)引用到,
    2. new 200个thread (可以用线程池)独立从上面的list去url去请求;注意List同步要做好,避免同一个url被几个thread取到。这样200个线程一旦启动了,它们都会努力的工作,并且先进去的url会优先被处理。
    另:绝对的实时是没有的.
      

  3.   

    你想做什么呢?
    测试并发效果吗
    如果是的话,试试apache的ab工具
    比自己写并发节约时间,而且更容易对比
      

  4.   


    个人认为没有其他更好的办法,因为所有的线程都已经满负荷工作了(请求完一个,马上请求下一个),并且从宏观的角度看,总有200个请求在并行处理。可能你的问题是,希望有个一个url要处理,马上就处理掉;可现实是不允许的,因为你最多就只允许同时200个;第201个就必须得等。
      

  5.   


    我也看不懂,但有一个可以考虑的场景,那就是并行的http的download,呵呵!