Java,每秒发送多个get请求

Java,每秒发送多个get请求,java,multithreading,concurrency,Java,Multithreading,Concurrency,如何在java中每秒发送N(N>100)个请求来指定URL? 我正在使用ExecutorService和倒计时闩锁 CountDownLatch latch = new CountDownLatch(DEFAULT_LATCH_COUNT); for (int i = 0; i < requestNumber; i++) { executor.submit(RequestFactory.getInstance().createRequester(latch, url

如何在java中每秒发送N(N>100)个请求来指定URL? 我正在使用ExecutorService和倒计时闩锁

CountDownLatch latch = new CountDownLatch(DEFAULT_LATCH_COUNT);
    for (int i = 0; i < requestNumber; i++) {
        executor.submit(RequestFactory.getInstance().createRequester(latch, url));
    }
    latch.countDown();
CountDownLatch闩锁=新的CountDownLatch(默认闩锁计数);
for(int i=0;i
但是为每个请求创建新线程不是一个好的实践,不是吗? 如果我必须每秒发送500个异步请求,我必须创建500个线程。
这是解决问题的正确方法还是有其他解决方案?

拥有500个线程将是一种不好的做法,因为这将导致线程间上下文切换的不必要开销,更不用说创建500个线程的初始化开销了

请记住,可以并行运行的线程数量受到可用处理器数量的限制(即
Runtime.getRuntime().availableProcessor()
)。因此,如果您的计算机有8个可用的处理器,那么创建8个以上的工作线程是没有意义的

至于实际执行工作,这是一个cookiecuter工作队列场景。在这里,您可以创建与可用处理器数量相等的工作线程数量,并让每个工作线程执行工作块,直到所有工作完成(通过
AtomicInteger
或类似的方法跟踪)