如何在Java Server中处理很多同时发生的Web请求?

时间:2015-10-29 08:58:39

标签: java web-services java-ee synchronized

我使用JSP和Servets创建了一个Java Web服务器来处理get / post请求。

如果1000个Web请求同时到达服务器,并且我想处理前10个,我将如何实现这一目标?例如,我只想在前10个请求中运行特定代码。

我需要使用哪种技术?我需要使用同步代码吗?我需要使用线程池吗?我需要使用队列吗?推荐的解决方案是什么?

1 个答案:

答案 0 :(得分:2)

如果你真的需要这样做,只需使用AtomicInteger作为你的计数器(背后的原因是servlet在多个请求之间共享,因此你可能会遇到同步问题)。所以你的代码可以是

public HitCounterServlet extends HttpServlet {

    private AtomicInteger counter = new AtomicInteger();

    public void doGet(HttpServletRequest req, HttpServletResponse res) {
        int counterValue = counter.incrementAndGet();
        if(value <= 10) {
            // handle request
        }
    }
}

您当然可以将此代码移至Filter或使用像@Disco 3建议的代理服务器。例如,您可以使用nginx