Прежде всего, ваш сервлет опасен и не безопасен для потоков.Сначала исправьте это.
@WebServlet("/test")
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private final AtomicInteger counter = new AtomicInteger(0);
private final UserOperation operation=null;
public MyServlet() {
super();
operation=new UserOperation();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int count = this.counter.incrementAndGet();
PrintWriter out=response.getWriter();
String output=operation.getResult();
System.out.println(count + ":" + output);
out.print(output);
return;
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
Теперь, когда это потокобезопасно, тот факт, что вы думаете, что создано 1000 потоков, неверен.Tomcat имеет пул потоков обработки запросов по умолчанию размером 200. Таким образом, он будет обрабатывать 200 запросов одновременно, а не 1000, как вы думаете.
Кроме того, вам не следует использовать 1000 фреймов для тестирования в качестве браузера.обычно ограничено 6 одновременными запросами к серверу.Поэтому я на самом деле сомневаюсь, что вы получаете 1000 одновременных запросов, но только 6 одновременно из браузера.Chrome может даже ограничить его до 1 за раз, так как он видит один и тот же URL и пытается кэшировать результаты 1 на 1.
Так что я сомневаюсь, что ваш сервлет работает медленно, но ваш метод тестирования делает этокажется медленным!Используйте подходящий инструмент, такой как Apache JMeter , чтобы отправить 1000 запросов на ваш сервер, а затем протестировать производительность.