我使用JSP和Servets创建了一个Java Web服务器来处理get / post请求。
如果1000个Web请求同时到达服务器,并且我想处理前10个,我将如何实现这一目标?例如,我只想在前10个请求中运行特定代码。
我需要使用哪种技术?我需要使用同步代码吗?我需要使用线程池吗?我需要使用队列吗?推荐的解决方案是什么?
答案 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
}
}
}