無法使用 Jetty 服務器線程池最大大小限制并發請求,為什么?
我創建了一個帶有線程池的 Jetty 服務器來限制對服務器的并發請求數量。但我指定的總請求大小始終比我指定的大小小 5。依賴關系:<dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> <version>9.4.6.v20170531</version></dependency>服務器代碼:public void httpServer(int port, Handler handler, String name) { QueuedThreadPool threadPool = new QueuedThreadPool(10); Server server = new Server(threadPool); server.setHandler(handler); HttpConfiguration http = new HttpConfiguration(); ServerConnector serverConnector = new ServerConnector(server, new HttpConnectionFactory(http)); serverConnector.setPort(port); server.setConnectors(new Connector[]{serverConnector}); try { log.info(name + " Listener Started on port: " + port); server.start(); server.join(); } catch (Exception e) { log.error("Unable to start Server... Exiting"); log.error(e, e); System.exit(1); }}處理程序:public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) { try { BufferedReader bufferedReader = request.getReader(); String s; StringBuilder sb = new StringBuilder(); PrintWriter writer = response.getWriter(); while ((s = bufferedReader.readLine()) != null) { sb.append(s); } System.out.println("Got Request"); Thread.sleep(2000); response.setStatus(HttpServletResponse.SC_OK); baseRequest.setHandled(true); } catch (Exception e) { e.printStackTrace(); }}在上面的代碼中,指定的 ThreadPool 大小為 10。但同時我只能創建 5。我嘗試將大小更改為 20,但在這種情況下,我可以發出的并發請求始終少 5,即 15。知道在哪里嗎?這 5 個線程正在被使用嗎?
查看完整描述