comparison src/org/eclipse/jetty/server/Server.java @ 865:6b210bb66c63

remove ThreadPool
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 02 Oct 2016 20:38:06 -0600
parents e21ca9878a10
children 4f5547d29192
comparison
equal deleted inserted replaced
864:e21ca9878a10 865:6b210bb66c63
19 package org.eclipse.jetty.server; 19 package org.eclipse.jetty.server;
20 20
21 import java.io.IOException; 21 import java.io.IOException;
22 import java.net.InetSocketAddress; 22 import java.net.InetSocketAddress;
23 import java.util.Enumeration; 23 import java.util.Enumeration;
24 import java.util.concurrent.LinkedBlockingQueue;
25 import java.util.concurrent.ThreadPoolExecutor;
26 import java.util.concurrent.TimeUnit;
24 27
25 import javax.servlet.ServletException; 28 import javax.servlet.ServletException;
26 import javax.servlet.http.HttpServletRequest; 29 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse; 30 import javax.servlet.http.HttpServletResponse;
28 31
38 import org.eclipse.jetty.util.URIUtil; 41 import org.eclipse.jetty.util.URIUtil;
39 import org.eclipse.jetty.util.component.Destroyable; 42 import org.eclipse.jetty.util.component.Destroyable;
40 import org.eclipse.jetty.util.component.LifeCycle; 43 import org.eclipse.jetty.util.component.LifeCycle;
41 import org.slf4j.Logger; 44 import org.slf4j.Logger;
42 import org.slf4j.LoggerFactory; 45 import org.slf4j.LoggerFactory;
43 import org.eclipse.jetty.util.thread.QueuedThreadPool;
44 import org.eclipse.jetty.util.thread.ShutdownThread; 46 import org.eclipse.jetty.util.thread.ShutdownThread;
45 import org.eclipse.jetty.util.thread.ThreadPool;
46 47
47 /* ------------------------------------------------------------ */ 48 /* ------------------------------------------------------------ */
48 /** Jetty HTTP Servlet Server. 49 /** Jetty HTTP Servlet Server.
49 * This class is the main class for the Jetty HTTP Servlet server. 50 * This class is the main class for the Jetty HTTP Servlet server.
50 * It aggregates Connectors (HTTP request receivers) and request Handlers. 51 * It aggregates Connectors (HTTP request receivers) and request Handlers.
58 private static final Logger LOG = LoggerFactory.getLogger(Server.class); 59 private static final Logger LOG = LoggerFactory.getLogger(Server.class);
59 60
60 private static final String __version = "8"; 61 private static final String __version = "8";
61 62
62 private final AttributesMap _attributes = new AttributesMap(); 63 private final AttributesMap _attributes = new AttributesMap();
63 private final ThreadPool _threadPool; 64 private final ThreadPoolExecutor _threadPool;
64 private Connector[] _connectors; 65 private Connector[] _connectors;
65 private boolean _sendServerVersion = true; //send Server: header 66 private boolean _sendServerVersion = true; //send Server: header
66 private boolean _sendDateHeader = false; //send Date: header 67 private boolean _sendDateHeader = false; //send Date: header
67 private int _graceful=0; 68 private int _graceful=0;
68 private boolean _stopAtShutdown; 69 private boolean _stopAtShutdown;
81 82
82 Connector connector=new SelectChannelConnector(); 83 Connector connector=new SelectChannelConnector();
83 connector.setPort(port); 84 connector.setPort(port);
84 setConnectors(new Connector[]{connector}); 85 setConnectors(new Connector[]{connector});
85 86
86 _threadPool = new QueuedThreadPool(); 87 _threadPool = new ThreadPoolExecutor(256, 256, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
87 addBean(_threadPool); 88 addBean(_threadPool);
88 } 89 }
89 90
90 91
91 /* ------------------------------------------------------------ */ 92 /* ------------------------------------------------------------ */
163 164
164 /* ------------------------------------------------------------ */ 165 /* ------------------------------------------------------------ */
165 /** 166 /**
166 * @return Returns the threadPool. 167 * @return Returns the threadPool.
167 */ 168 */
168 public ThreadPool getThreadPool() 169 public ThreadPoolExecutor getThreadPool()
169 { 170 {
170 return _threadPool; 171 return _threadPool;
171 } 172 }
172 173
173 /** 174 /**
356 357
357 358
358 /* ------------------------------------------------------------ */ 359 /* ------------------------------------------------------------ */
359 public void join() throws InterruptedException 360 public void join() throws InterruptedException
360 { 361 {
361 getThreadPool().join(); 362 // getThreadPool().join();
363 _threadPool.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
362 } 364 }
363 365
364 /* ------------------------------------------------------------ */ 366 /* ------------------------------------------------------------ */
365 367
366 /* ------------------------------------------------------------ */ 368 /* ------------------------------------------------------------ */
513 public interface Graceful extends Handler 515 public interface Graceful extends Handler
514 { 516 {
515 public void setShutdown(boolean shutdown); 517 public void setShutdown(boolean shutdown);
516 } 518 }
517 519
520
521 public final boolean isLowOnThreads()
522 {
523 ThreadPoolExecutor tpe = getThreadPool();
524 // getActiveCount() locks the thread pool, so execute it last
525 return tpe.getPoolSize() == tpe.getMaximumPoolSize() &&
526 tpe.getQueue().size() >= tpe.getPoolSize() - tpe.getActiveCount();
527 }
528
529
518 /* ------------------------------------------------------------ */ 530 /* ------------------------------------------------------------ */
519 public static void main(String...args) throws Exception 531 public static void main(String...args) throws Exception
520 { 532 {
521 System.err.println(getVersion()); 533 System.err.println(getVersion());
522 } 534 }