正在考虑setThreadPool()功能
QueuedThreadPool
的构造函数有多种变体,可以满足您的需要。
重要提示:不要用硬队列限制来限制QueuedThreadPool,这会严重影响服务器性能和可伸缩性。
传统上,在Jetty的6天里,人们会试图通过操纵线程来限制Jetty可以做的事情,这是可行的。
但是在Jetty 7和Jetty 8的过程中,这变得站不住脚了(你可以感谢各种EE规范的改变)
当Jetty 9出现时,试图通过操纵ThreadPool来影响行为已经不可靠了。
现在在Jetty 10上,为了对Jetty施加各种限制而操纵线程池实际上是对可靠性有害的。
但是一切都没有失去,有许多现有的(和更好的)技术(自Jetty 7天以来)来限制Jetty上的行为:请求,资源,连接,池等
另一个选项,如果你关心,是不使用Jetty默认的QueuedThreadPool
,而只是使用一个标准的javajava.util.concurrent.ThreadPoolExecutor
包装的org.eclipse.jetty.util.thread.ExecutorThreadPool
,你传递给Jettynew Server(ThreadPool)
构造函数。您将失去Jetty内置的调试和转储功能,但它将正常工作。
Server server = new Server();
HttpConfiguration httpConfig = new HttpConfiguration();
ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory(httpConfig));
// Set the maximum queue size to 100
connector.setQueueCapacity(100);
server.setConnectors(new Connector[] { connector });
// Start the server
server.start();